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: Ada bootstrap failure due to new DCE bug


On Thu, 2004-08-05 at 01:28, Richard Henderson wrote:

> It seems that needs_to_live_in_memory is returning false because 
> DECL_NEEDS_TO_LIVE_IN_MEMORY_INTERNAL is never set for the memory tag.  
> 
Because we never mark it call clobbered.  The reason DECL_...INTERNAL
exists is to take care of cases where the DECL fails all the other tests
in needs_to_live_in_memory because we only realize that after alias
analysis.  So, an addressable variable that escapes would not be marked
as needs_to_live_in_memory until after we've done alias analysis.

Perhaps this bit is misnamed.  I guess it could be called
DECL_IS_CALL_CLOBBERED, or something.

I'm travelling right now, but from the dump, it seems that we are just
not realizing that tsn_7 points to external memory.  That's why its tag
is not marked call-clobbered.  I will take a closer look when I get
home.

I'm sure that here we are getting confused because the pointer gets the
address of an array reference whose base is a dereferenced pointer.  Ada
is throwing quite a few curve balls that the alias analyzer will need to
recognize.  I'm assuming that &(*ptr)[ix] is valid GIMPLE?


Diego.


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