This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: new bootstrap failure on Solaris *and* SunOS4. flow/combine/sched
- To: Jeffrey A Law <law at cygnus dot com>
- Subject: Re: new bootstrap failure on Solaris *and* SunOS4. flow/combine/sched
- From: Richard Henderson <rth at cygnus dot com>
- Date: Wed, 8 Sep 1999 03:05:12 -0700
- Cc: "Kaveh R. Ghazi" <ghazi at caip dot rutgers dot edu>, egcs-bugs at egcs dot cygnus dot com
- References: <199908281409.KAA25419@caip.rutgers.edu> <23374.936695957@upchuck.cygnus.com>
On Tue, Sep 07, 1999 at 03:19:17AM -0600, Jeffrey A Law wrote:
> We had code to handle this case in the old update_flow_info that somehow did
> not make it into the newer update_life_info.
>
> The old code started with a comment like:
>
> /* If any insn, except the last, uses the register set by the last insn,
> then we need a new REG_DEAD note on that insn. In this case, there
> would not have been a REG_DEAD note for this register in the original
> insn because it was used and set within one insn. */
>
> Looking through the new code, I do not see anything to handle this case.
That's all new_insn_dead_notes and it's subroutines does. There's
a huge block comment in front of an early out that triggers here;
I'm not sure wtf that's for, as it definitely seems wrong.
I'm doing some bootstraps with the early out disabled to see if I
can reproduce whatever it was that prompted it in the first place.
> I also note that the block with this comment in the old update_flow_info
> doesn't appear to have an equivalent block in update_life_info:
>
> /* If the original dest is modifying a multiple register target, and the
> original instruction was split such that the original dest is now set
> by two or more SUBREG sets, then the split insns no longer kill the
> destination of the original insn.
I remember going over this one with Bob and deciding we just wouldn't
bother with it. The comment is wrong -- the split insns _do_ kill the
destination of the original insn, it's just that flow code elsewhere
is too stupid to realize the fact. I wonder how hard it would be to
track lifetimes of register fragments so we can do this right...
We also hadn't previously installed the new update_life_info for use
with the normal splits, so we never ran into this on the branch. :-/
r~