[PATCH] Fix PR middle-end/26306

Mark Mitchell mark@codesourcery.com
Sun Nov 5 18:03:00 GMT 2006


Richard Kenner wrote:
>> Why treat aggregates differently from scalars in this context?
> 
> Because the idea is to force a memory reference in the case of a volatile 
> scalar, but there's no well-defined meaning for a "memory reference" in
> the case of BLKmode.

So, what's that got to with aggegates that are, say, SImode?  And, why 
is there no well-defined meaning?  (The obvious thing would be to touch 
all bytes that make up the aggregate.)

In C and C++, the notion of "volatile" doesn't say anything about 
aggregates.  Of course, in C and C++, the specification doesn't say much 
about what happens in the presence of volatile, but if my compiler 
guarantees that for:

   volatile int i;
   void f() {
     i;
   }

I get a memory read for "i", why wouldn't I expect that for:

   volatile struct S { int a; } i;

?

-- 
Mark Mitchell
CodeSourcery
mark@codesourcery.com
(650) 331-3385 x713



More information about the Gcc-patches mailing list