diff options
author | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 1993-08-03 21:34:43 +0000 |
---|---|---|
committer | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 1993-08-03 21:34:43 +0000 |
commit | 7dbf1af4eda0b0823f90b1b27188863c6c60249c (patch) | |
tree | ab753f1bf2ec0992853d95adc38a417871b59ce2 /gcc | |
parent | 94a588c374cd2ab004195f39b7aa3e1e574bbd3e (diff) | |
download | gcc-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.c | 5 |
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 |