On 06/10/2010 10:37 PM, Jeff Law wrote: > > 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
[...] > r59: preferred NO_REGS, alternative NO_REGS, cover NO_REGS [...] > 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. >From the above, I don't see the problem. Reg 59 is detected as reg_equiv_invariant, which means if we don't allocate a hard reg to it, we can substitute the invariant everywhere and save the initializing instruction. As far as I can tell this is working exactly as intended. Bernd