On Fri, Apr 27, 2007 at 04:00:13PM +0200, Rask Ingemann Lambertsen wrote:
> I don't see how emit_move_complex_push() can ever generate a push
> instruction. Here's a backtrace:
emit_move_insn (gen_rtx_MEM (submode, XEXP (x, 0)),
read_complex_part (y, imag_first));
return emit_move_insn (gen_rtx_MEM (submode, XEXP (x, 0)),
read_complex_part (y, !imag_first));
Note that we're replacing (pre_dec:CSI sp) with two
instances of (pre_dec:SI sp).
> Usually, doing so will fool reload's frame pointer elimination if the
> operand is a pseudo which ends up on the stack. Diffing the output between
> the two implementations confirms it:
This doesn't look like frame pointer elimination at all,
just different stack slots allocated. But that said, if
there's a bug in elimination, it should be fixed, not
hacked around in one backend.
r~