Re: [PATCH] C undefined behavior fix

Peter Barada (pbarada@mail.wm.sps.mot.com)
Thu, 10 Jan 2002 10:30:14 -0500


>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)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/