Minor issue with recent code to twiddle costs of pseudos with invariant equivalents

Jeff Law law@redhat.com
Thu Jun 10 20:59:00 GMT 2010


Compile the attached with -O2 on x86-unknown-linux-gnu and review the 
.ira dump for main()

starting the processing of deferred insns
ending the processing of deferred insns
df_analyze called
Building IRA IR
starting the processing of deferred insns
ending the processing of deferred insns
df_analyze called
init_insns for 59: (insn_list:REG_DEP_TRUE 5 (nil))
Reg 59 has equivalence, initial gains 4000

Pass 0 for finding pseudo/allocno costs

     a0 (r59,l0) best NO_REGS, cover NO_REGS

   a0(r59,l0) costs: AREG:0,0 DREG:0,0 CREG:0,0 BREG:0,0 SIREG:0,0 
DIREG:-1000,-1000 AD_REGS:0,0 CLOBBERED_REGS:0,0 Q_REGS:0,0 
NON_Q_REGS:0,0 LEGACY_REGS:0,0 GENERAL_REGS:0,0 
SSE_FIRST_REG:26000,26000 SSE_REGS:26000,26000 MMX_REGS:26000,26000 MEM:7000

Pass 1 for finding pseudo/allocno costs

     r59: preferred NO_REGS, alternative NO_REGS, cover NO_REGS

   a0(r59,l0) costs: AREG:8000,8000 DREG:8000,8000 CREG:8000,8000 
BREG:8000,8000 SIREG:8000,8000 DIREG:3000,3000 AD_REGS:8000,8000 
CLOBBERED_REGS:8000,8000 Q_REGS:8000,8000 NON_Q_REGS:8000,8000 
LEGACY_REGS:8000,8000 GENERAL_REGS:8000,8000 SSE_FIRST_REG:34000,34000 
SSE_REGS:34000,34000 MMX_REGS:34000,34000 MEM:15000

[ ... ]
   Loop 0 (parent -1, header bb0, depth 0)
     bbs: 2
     all: 0r59
     modified regnos: 59
     border:
     Pressure: GENERAL_REGS=4
       Spill a0(r59,l0)
Disposition:
     0:r59  l0   mem

Ultimately I think reload is cleaning this up, but it seems awful 
strange to have a pseudo/allocno which clearly should be allocated to a 
hard GPR preferring NO_REGS and from an allocation standpoint living in 
memory.

Jeff
-------------- next part --------------
A non-text attachment was scrubbed...
Name: j.c
Type: text/x-csrc
Size: 26740 bytes
Desc: not available
URL: <https://gcc.gnu.org/pipermail/gcc/attachments/20100610/fada8719/attachment.bin>


More information about the Gcc mailing list