This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
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~