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: [PATCH] global register problem


On Thu, Aug 01, 2002 at 07:09:43PM -0700, Richard Henderson wrote:
> On Thu, Aug 01, 2002 at 06:01:23PM +0200, Richard Zidlicky wrote:
> > Because %d7 is in regs_invalidated_by_call %d7 it is mark_set_1(..)
> > for the call instruction....
> 
> Should be fixed by
> 
> 2002-06-16  Richard Henderson  <rth@redhat.com>
> 
>         PR opt/6722
>         * regclass.c (globalize_reg): Update regs_invalidated_by_call.

it is in the Changelog of my CVS snapshot and certainly doesn't fix the
problem - perhaps even aggravates it. For example 3.1 release was almost 
correct wrt global asm register handling, 3.1.1 is hopelessly broken 
for my purposes.

What happens in my case, the loop 1720-1727 in propagate_one_insn
removes the register from the pbi->reg_live set. The loop in lines
1771 tries to add it again, instead it 
 - fails to add it to reg_live set
 - adds a REG_DEAD note for %d7

Perhaps mark_used_reg needs to take a flags arg like mark_set_1?
Beeing a bloody beginner to gcc hacking I would find it more intuitive
to have mark_reg_used_{r,w,rw} btw.

Richard


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