This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] C undefined behavior fix
>No, you're wrong here. That would violate the following provisions of
>the C99 standard, because the two accesses to `a' would not have occurred.
>(It would also violate similar provisions of the C89 and C++ standards.)
>The "as if" rule -- which is stated in 5.1.2.3 [#3] in C99 -- is explicitly
>defined to NOT allow optimizing away accesses to volatile objects.
>
> | [#3] In the abstract machine, all expressions are evaluated
> | as specified by the semantics. An actual implementation
> | need not evaluate part of an expression if it can deduce
> | that its value is not used and that no needed side effects
> | are produced (including any caused by calling a function or
> | accessing a volatile object).
Ahh, I see now said the blind man... When I read over this, I homed in
on "An actual emplementation need not evaluate part of the expression
if it can deduce that its value is not needed", and conveniently
skipped the rest of the sentence.
My Bad.
--
Peter Barada Peter.Barada@motorola.com
Wizard 781-852-2768 (direct)
WaveMark Solutions(wholly owned by Motorola) 781-270-0193 (fax)