This is the mail archive of the gcc-bugs@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]

Re: new bootstrap failure on Solaris *and* SunOS4. flow/combine/sched


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~


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