summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1993-08-03 21:34:43 +0000
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1993-08-03 21:34:43 +0000
commit7dbf1af4eda0b0823f90b1b27188863c6c60249c (patch)
treeab753f1bf2ec0992853d95adc38a417871b59ce2 /gcc
parent94a588c374cd2ab004195f39b7aa3e1e574bbd3e (diff)
downloadgcc-7dbf1af4eda0b0823f90b1b27188863c6c60249c.tar.gz
(store_one_arg): Don't pass ARG->STACK as TARGET if it is a different
mode than the expression (i.e., a promoted mode). git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@5063 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/calls.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/calls.c b/gcc/calls.c
index 8188a6e2689..c776dd93917 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