+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>
* c-parse.in (select_or_iter_stmt): Use truthvalue_conversion
Pmode above. We must use the actual mode of the parm. */
parmreg = gen_reg_rtx (TYPE_MODE (TREE_TYPE (parm)));
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;
/* STACK_PARM is the pointer, not the parm, and PARMREG is
now the parm. */