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] |
On 06/10/2010 10:37 PM, Jeff Law wrote:But shouldn't having an invariant form just decrease the priority for pseudo 59 to get a hard register? The NO_REGS preferencing will totally disable register allocation for pseudo 59.
[...]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 awfulFrom the above, I don't see the problem. Reg 59 is detected as
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.
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
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |