(store_one_arg): Don't pass ARG->STACK as TARGET if it is a different
authorRichard Kenner <kenner@gcc.gnu.org>
Tue, 3 Aug 1993 21:34:43 +0000 (17:34 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Tue, 3 Aug 1993 21:34:43 +0000 (17:34 -0400)
mode than the expression (i.e., a promoted mode).

From-SVN: r5063

gcc/calls.c

index 8188a6e2689aea8de7706e9d3ca405c1370ad371..c776dd93917cef8736037f249c31ce5d03fa57bb 100644 (file)
@@ -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