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]

Re: general_operand() not accepting CONCAT?


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~


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