> 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! Also, how do we handle TYPE_NONALIASED_COMPONENT? It's exactly the same issue?