new register allocator and HARD_REGNO_CALL_PART_CLOBBERED

Daniel Berlin dberlin@dberlin.org
Thu May 1 01:54:00 GMT 2003


On Wednesday, April 30, 2003, at 03:31  PM, Herman ten Brugge wrote:

> Hello,
>
> I found a problem with the -fnew-ra option of the compiler. I analysed
> the problem and found that the macro HARD_REGNO_CALL_PART_CLOBBERED
> is not used by the new register allocator.

It's not a problem in new-ra (i've dealt with exactly this problem in 
the past month, i never got around to sending a patch to the mainline).
It's in df.c.

All register info used from new-regalloc is coming from df.c, that's 
where you need to add the macro.

Right somewhere in this code:
           if (df->flags & DF_HARD_REGS)
             {
               /* Calls may also reference any of the global registers,
                  so they are recorded as used.  */
               for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
                 if (global_regs[i])
                   {
                     x = df_reg_use_gen (i);
                     df_uses_record (df, &SET_DEST (x),
                                     DF_REF_REG_USE, bb, insn, 0);
                   }
             }



More information about the Gcc mailing list