diff options
author | sirl <sirl@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-11-11 21:29:19 +0000 |
---|---|---|
committer | sirl <sirl@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-11-11 21:29:19 +0000 |
commit | 35fc9da77bfd1654bc1cd416592a307a6c3a70ab (patch) | |
tree | 4d969c81634f7957d2f4884ced2b19647a323b05 /gcc/stmt.c | |
parent | c939aa8ceaaf32389e1bbfb44ef686d10751336d (diff) | |
download | gcc-35fc9da77bfd1654bc1cd416592a307a6c3a70ab.tar.gz |
2002-11-11 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
PR c/8467
* gcc.c-torture/execute/20021111-1.c
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@59026 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/stmt.c')
-rw-r--r-- | gcc/stmt.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/gcc/stmt.c b/gcc/stmt.c index c07fe663fb3..360abe19571 100644 --- a/gcc/stmt.c +++ b/gcc/stmt.c @@ -3311,8 +3311,18 @@ tail_recursion_args (actuals, formals) if (GET_MODE (DECL_RTL (f)) == GET_MODE (argvec[i])) emit_move_insn (DECL_RTL (f), argvec[i]); else - convert_move (DECL_RTL (f), argvec[i], - TREE_UNSIGNED (TREE_TYPE (TREE_VALUE (a)))); + { + rtx tmp = argvec[i]; + + if (DECL_MODE (f) != GET_MODE (DECL_RTL (f))) + { + tmp = gen_reg_rtx (DECL_MODE (f)); + convert_move (tmp, argvec[i], + TREE_UNSIGNED (TREE_TYPE (TREE_VALUE (a)))); + } + convert_move (DECL_RTL (f), tmp, + TREE_UNSIGNED (TREE_TYPE (TREE_VALUE (a)))); + } } free_temp_slots (); |