On Wed, Mar 23, 2011 at 1:22 AM, Eric Botcazou <ebotca...@adacore.com> wrote: >> It is: >> >> op0 = parmreg; >> op1 = validated_mem; >> if (icode != CODE_FOR_nothing >> && insn_data[icode].operand[0].predicate (op0, >> promoted_nominal_mode) && insn_data[icode].operand[1].predicate (op1, >> data->passed_mode)) { >> 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 (); > > Sure, but why is need_conversion set to true? >
Pointer is promoted to Pmode from ptr_mode. -- H.J. --- #0 promote_mode (type=0x7ffff0e05540, mode=SImode, punsignedp=0x7fffffffd76c) at /export/gnu/import/git/gcc-x32/gcc/explow.c:808 #1 0x00000000009ef004 in default_promote_function_mode (type=0x7ffff0e05540, mode=SImode, punsignedp=0x7fffffffd76c, funtype=0x7ffff0cec3f0, for_return=2) at /export/gnu/import/git/gcc-x32/gcc/targhooks.c:128 #2 0x00000000006d7155 in promote_function_mode (type=0x7ffff0e05540, mode=SImode, punsignedp=0x7fffffffd76c, funtype=0x7ffff0cec3f0, for_return=2) at /export/gnu/import/git/gcc-x32/gcc/explow.c:774 #3 0x00000000007cf7de in assign_parm_setup_reg (all=0x7fffffffda10, parm=0x7ffff0dec880, data=0x7fffffffd980) at /export/gnu/import/git/gcc-x32/gcc/function.c:2941