aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1993-10-05 22:17:23 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1993-10-05 22:17:23 -0400
commit843fec55422d450549b2620949ea35c103e206ec (patch)
tree7a38103cfbc89a03f3e5315482c7f725e8bfbe4f /gcc
parentdf5f5124d52b891ed9f0ee6da1d21d6ef4fbc82f (diff)
downloadgcc-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.c9
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)