This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Incorrect bitfield aliasing with Tree SSA


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 :)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]