This is the mail archive of the gcc-patches@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]

reload vs symbolic constants


Ok, I've finally characterized the problem Franz is seeing here.

The issue is that we cannot put anything in reg_equiv_constant
that cannot be a valid argument to a move instruction.

The reason we do not encounter this problem on x86 is that there
we define LEGITIMATE_PIC_OPERAND_P to reject the SYMBOL_REF.
That is one viable alternative for powerpc.

However, rejecting the constant equivalence here means that we
spill and reload addresses, which is silly.  Another solution
to the problem is to accept SYMBOL_REF as a valid operand to
a move before reload, and only after reload split the insn into
the movsi_got_internal pattern.

I believe I'll continue to attempt to fix reload such that it
will spill the original pseudo instead of dumping constants to
memory (or aborting) in cases like these.


r~


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]