aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1996-10-23 13:27:44 -0700
committerJim Wilson <wilson@gcc.gnu.org>1996-10-23 13:27:44 -0700
commit059c3d849e4cabccbe6d36710f903986c55bd1fb (patch)
tree574236e4335c133ca437f8a443f4681406cdb7f5
parentdd98f85c9a6430e028f6e9dc91a1531fb04c843c (diff)
downloadgcc-059c3d849e4cabccbe6d36710f903986c55bd1fb.zip
gcc-059c3d849e4cabccbe6d36710f903986c55bd1fb.tar.gz
gcc-059c3d849e4cabccbe6d36710f903986c55bd1fb.tar.bz2
(expand_call): In target code, move PARALLEL case above
target != case. From-SVN: r13010
-rw-r--r--gcc/calls.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/gcc/calls.c b/gcc/calls.c
index 46843941..9f9d659 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -2022,15 +2022,6 @@ expand_call (exp, target, ignore)
expr_size (exp),
TYPE_ALIGN (TREE_TYPE (exp)) / BITS_PER_UNIT);
}
- else if (target && GET_MODE (target) == TYPE_MODE (TREE_TYPE (exp))
- && GET_MODE (target) == GET_MODE (valreg))
- /* TARGET and VALREG cannot be equal at this point because the latter
- would not have REG_FUNCTION_VALUE_P true, while the former would if
- it were referring to the same register.
-
- If they refer to the same register, this move will be a no-op, except
- when function inlining is being done. */
- emit_move_insn (target, valreg);
/* Handle calls that return values in multiple non-contiguous locations.
The Irix 6 ABI has examples of this. */
else if (GET_CODE (valreg) == PARALLEL)
@@ -2045,6 +2036,15 @@ expand_call (exp, target, ignore)
emit_group_store (target, valreg);
}
+ else if (target && GET_MODE (target) == TYPE_MODE (TREE_TYPE (exp))
+ && GET_MODE (target) == GET_MODE (valreg))
+ /* TARGET and VALREG cannot be equal at this point because the latter
+ would not have REG_FUNCTION_VALUE_P true, while the former would if
+ it were referring to the same register.
+
+ If they refer to the same register, this move will be a no-op, except
+ when function inlining is being done. */
+ emit_move_insn (target, valreg);
else if (TYPE_MODE (TREE_TYPE (exp)) == BLKmode)
{
/* Some machines (the PA for example) want to return all small