Commit f523247a by Alexandre Oliva Committed by Alexandre Oliva

function.c (assign_parms): Convert arguments passed by reference to the right mode.

* function.c (assign_parms): Convert arguments passed by
reference to the right mode.

From-SVN: r38528
parent fb8b656c
2000-12-29 Alexandre Oliva <aoliva@redhat.com>
* function.c (assign_parms): Convert arguments passed by
reference to the right mode.
2000-12-28 Geoffrey Keating <geoffk@redhat.com> 2000-12-28 Geoffrey Keating <geoffk@redhat.com>
* c-parse.in (select_or_iter_stmt): Use truthvalue_conversion * c-parse.in (select_or_iter_stmt): Use truthvalue_conversion
......
...@@ -4726,7 +4726,22 @@ assign_parms (fndecl) ...@@ -4726,7 +4726,22 @@ assign_parms (fndecl)
Pmode above. We must use the actual mode of the parm. */ Pmode above. We must use the actual mode of the parm. */
parmreg = gen_reg_rtx (TYPE_MODE (TREE_TYPE (parm))); parmreg = gen_reg_rtx (TYPE_MODE (TREE_TYPE (parm)));
mark_user_reg (parmreg); mark_user_reg (parmreg);
emit_move_insn (parmreg, DECL_RTL (parm)); if (GET_MODE (parmreg) != GET_MODE (DECL_RTL (parm)))
{
rtx tempreg = gen_reg_rtx (GET_MODE (DECL_RTL (parm)));
push_to_sequence (conversion_insns);
emit_move_insn (tempreg, DECL_RTL (parm));
DECL_RTL (parm)
= convert_to_mode (GET_MODE (parmreg), tempreg,
TREE_UNSIGNED (TREE_TYPE (parm)));
emit_move_insn (parmreg, DECL_RTL (parm));
conversion_insns = get_insns();
did_conversion = 1;
end_sequence ();
}
else
emit_move_insn (parmreg, DECL_RTL (parm));
DECL_RTL (parm) = parmreg; DECL_RTL (parm) = parmreg;
/* STACK_PARM is the pointer, not the parm, and PARMREG is /* STACK_PARM is the pointer, not the parm, and PARMREG is
now the parm. */ now the parm. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment