[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