This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Ada bootstrap failure due to new DCE bug
- From: Diego Novillo <dnovillo at redhat dot com>
- To: Richard Henderson <rth at redhat dot com>
- Cc: Richard Kenner <kenner at vlsi1 dot ultra dot nyu dot edu>, "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>
- Date: Sat, 07 Aug 2004 19:43:27 -0400
- Subject: Re: Ada bootstrap failure due to new DCE bug
- Organization: Red Hat Canada
- References: <10408030312.AA06854@vlsi1.ultra.nyu.edu> <20040805052826.GA25250@redhat.com>
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.