diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1993-08-03 17:34:43 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1993-08-03 17:34:43 -0400 |
commit | 3a08477ac574d22ace439cb7e6b93184d8f13b7c (patch) | |
tree | ab753f1bf2ec0992853d95adc38a417871b59ce2 | |
parent | 377017c49155f173328262a193d66acdd7c33e73 (diff) | |
download | gcc-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.c | 5 |
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 |