http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47725

--- Comment #5 from H.J. Lu <hjl.tools at gmail dot com> 2011-02-14 14:06:45 
UTC ---
(In reply to comment #4)
> 
> Who generates insn #2?  The machinery handling parameters in function.c?  If
> so, maybe it should do the copy in the incoming mode instead:
> 
> (insn 2 4 3 2 (set (reg/v/f:SI 59 [ pc_target ])
>         (reg:SI 5 di [ pc_target ]))
> 
> (insn 3 5 4 2 (set (reg:DI 60)
>         (zero_extend:DI (reg/v/f:SI 59 [ pc_target ])))

assign_parm_setup_reg has

          enum rtx_code code = unsignedp ? ZERO_EXTEND : SIGN_EXTEND;
          rtx insn, insns;
          HARD_REG_SET hardregs;

          start_sequence ();
          insn = gen_extend_insn (op0, op1, promoted_nominal_mode,
                                  data->passed_mode, unsignedp);
          emit_insn (insn);
          insns = get_insns ();

Reply via email to