This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
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