aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1993-08-03 17:34:43 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1993-08-03 17:34:43 -0400
commit3a08477ac574d22ace439cb7e6b93184d8f13b7c (patch)
treeab753f1bf2ec0992853d95adc38a417871b59ce2
parent377017c49155f173328262a193d66acdd7c33e73 (diff)
downloadgcc-3a08477ac574d22ace439cb7e6b93184d8f13b7c.zip
gcc-3a08477ac574d22ace439cb7e6b93184d8f13b7c.tar.gz
gcc-3a08477ac574d22ace439cb7e6b93184d8f13b7c.tar.bz2
(store_one_arg): Don't pass ARG->STACK as TARGET if it is a different
mode than the expression (i.e., a promoted mode). From-SVN: r5063
-rw-r--r--gcc/calls.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/calls.c b/gcc/calls.c
index 8188a6e..c776dd9 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -2805,7 +2805,10 @@ store_one_arg (arg, argblock, may_be_alloca, variable_size, fndecl,
if (arg->pass_on_stack)
stack_arg_under_construction++;
#endif
- arg->value = expand_expr (pval, partial ? NULL_RTX : arg->stack,
+ arg->value = expand_expr (pval,
+ (partial
+ || TYPE_MODE (TREE_TYPE (pval)) != arg->mode)
+ ? NULL_RTX : arg->stack,
VOIDmode, 0);
/* If we are promoting object (or for any other reason) the mode