Incorrect bitfield aliasing with Tree SSA
Daniel Berlin
dberlin@dberlin.org
Mon Jun 18 15:10:00 GMT 2007
On 6/18/07, Richard Kenner <kenner@vlsi1.ultra.nyu.edu> wrote:
> > Again, the tree level relies on the documented (in the comments of
> > alias.c) fact that given a structure, the fields contained in a
> > structure will have alias sets that are strict subsets of the parent.
>
> That is ONLY true for fields that don't have DECL_NONADDRESSABLE_P
> and that's been the case foreever. The documentation might be confusing,
> but the code has never been.
>
> > The bug reports are about cases where we have a struct foo * (where
> > struct foo contains int a:31), and foo pointer->a is claimed to not
> > alias with foo.a.
>
> How can you take a pointer to the bitfield?
>
> > I would much rather maintain the strict subset invariant than the
> > component_uses_parent_alias_set stuff, since this is the documented
> > invariant, and makes sense.
>
> But throws away the entire DECL_NONADDRESSABLE_P mechanism!
No, an int* will still not conflict with int:31
a short * will still not conflict with short:31
> Also, how
> do we handle TYPE_NONALIASED_COMPONENT? It's exactly the same issue?
Tell me what TYPE_NONALIASED_COMPONENT does, and i'll tell you what
will happen right now :)
More information about the Gcc
mailing list