------- Comment #20 from dberlin at gcc dot gnu dot org 2006-03-24 04:00 ------- Subject: Re: [4.1/4.2 Regression] ACATS tests c974001 and c974013 do not terminate with struct aliasing
On Thu, 2006-03-23 at 22:21 +0000, ebotcazou at gcc dot gnu dot org wrote: > > ------- Comment #17 from ebotcazou at gcc dot gnu dot org 2006-03-23 22:21 > ------- > > Errr, but that would make it non-addressable, and thus, non-aliasable, > > which is the exact opposite effect of what is causing the problem. > > Take a look at alias.c:record_component_aliases. :-) Yeah, and that has nothing to do with the problem.. Really. You think it's going to make it use the parent's alias set and make, and this may be true for type based aliasing. However, either the documentation for the flag is completely wrong, or you could just give these things their own alias set if it's not addressable, since no pointer can alias it. That is what it means to be non-addressable. If nothing can take the address, then it can't be pointed to. It does not mean "it's really still addressable through some parent pointer magic blah blah blah". At least, in *any other definition we use in the compiler". If you can get a pointer to it, then by the definition you "an address of the component can be formed", and htus, it would not be DECL_NONADDRESSABLE_P. Thus, making PTA using this flag would make your problem *worse*, not better. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25737