[cfe-dev] Spurious register spill with volatile function argument

Florian Weimer via cfe-dev cfe-dev at lists.llvm.org
Mon Mar 28 08:09:55 PDT 2016


* Paul Koning:

>> On Mar 28, 2016, at 8:11 AM, Florian Weimer <fw at deneb.enyo.de> wrote:
>> 
>> ...
>> The problem is that “reading” is either not defined, or the existing
>> flatly contradicts existing practice.
>> 
>> For example, if p is a pointer to a struct, will the expression &p->m
>> read *p?
>
> Presumably the offset of m is substantially larger than 0?  If so, my
> answer would be "it had better not".  Does any compiler treat that
> statement as an access to *p ?

As I tried to explain, GCC does, for aliasing purposes.  For the
expression p->m, there is an implicit read of *p, asserting that the
static and dynamic types match.


More information about the cfe-dev mailing list