Messages in this thread | | | From | dewar@gnat ... | Subject | Re: [PATCH] C undefined behavior fix | Date | Wed, 9 Jan 2002 15:32:13 -0500 (EST) |
| |
<<Ah... so (paraphrasing) -- if you have two byte size volatile objects, and they happen to end up adjacent in memory, the compiler is explicitly forbidden from turning an access to one of them into a wider access -- because that would be an access to both of them, which is a *different* side effect. (Certainly that exactly matches the hardware-centric view of why "volatile" exists.) And the compiler isn't allowed to change side effects, including causing them when the source code didn't ask you to cause them. >>
Right, and as you see that is covered by the language on external effects in the Ada standard (remember the intent in Ada was to exactly match the C rules :-)
But one thing in the Ada world that we consider left open is whether a compiler is free to combine two volatile loads into a single load. Probably the answer should be no, but the language at least in the Ada standard does not seem strong enough to say this. - 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/
| |