diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1993-10-05 22:17:23 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1993-10-05 22:17:23 -0400 |
commit | 843fec55422d450549b2620949ea35c103e206ec (patch) | |
tree | 7a38103cfbc89a03f3e5315482c7f725e8bfbe4f /gcc | |
parent | df5f5124d52b891ed9f0ee6da1d21d6ef4fbc82f (diff) | |
download | gcc-843fec55422d450549b2620949ea35c103e206ec.zip gcc-843fec55422d450549b2620949ea35c103e206ec.tar.gz gcc-843fec55422d450549b2620949ea35c103e206ec.tar.bz2 |
(expand_call): Properly test if we need to promote operand; use
convert_modes instead of convert_to_mode.
From-SVN: r5622
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/calls.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/calls.c b/gcc/calls.c index 9334d95..22cdf5c 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -1540,10 +1540,11 @@ expand_call (exp, target, ignore) /* If we are to promote the function arg to a wider mode, do it now. */ - if (GET_MODE (args[i].value) != VOIDmode - && GET_MODE (args[i].value) != args[i].mode) - args[i].value = convert_to_mode (args[i].mode, args[i].value, - args[i].unsignedp); + if (args[i].mode != TYPE_MODE (TREE_TYPE (args[i].tree_value))) + args[i].value + = convert_modes (args[i].mode, + TYPE_MODE (TREE_TYPE (args[i].tree_value)), + args[i].value, args[i].unsignedp); } #if defined(ACCUMULATE_OUTGOING_ARGS) && defined(REG_PARM_STACK_SPACE) |