aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1996-10-31 10:30:25 -0800
committerJim Wilson <wilson@gcc.gnu.org>1996-10-31 10:30:25 -0800
commite9ac02a6f163690948ef8d3a3ad73b75171079c4 (patch)
tree2125dafa0d55acf5bf8d589e30121f00cbd23133 /gcc
parent80a3ad457d2afd93efaeccedd5cfa978a94c96ed (diff)
downloadgcc-e9ac02a6f163690948ef8d3a3ad73b75171079c4.zip
gcc-e9ac02a6f163690948ef8d3a3ad73b75171079c4.tar.gz
gcc-e9ac02a6f163690948ef8d3a3ad73b75171079c4.tar.bz2
(expand_expr, case CONSTRUCTOR): Don't use a PARALLEL
target. From-SVN: r13085
Diffstat (limited to 'gcc')
-rw-r--r--gcc/expr.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index abdfba7..09aeeeb 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -5229,7 +5229,10 @@ expand_expr (exp, target, tmode, modifier)
else
{
- if (target == 0 || ! safe_from_p (target, exp))
+ /* Handle calls that pass values in multiple non-contiguous
+ locations. The Irix 6 ABI has examples of this. */
+ if (target == 0 || ! safe_from_p (target, exp)
+ || GET_CODE (target) == PARALLEL)
{
if (mode != BLKmode && ! TREE_ADDRESSABLE (exp))
target = gen_reg_rtx (tmode != VOIDmode ? tmode : mode);