summaryrefslogtreecommitdiff
path: root/gcc/caller-save.c
diff options
context:
space:
mode:
authorIlya Enkovich <ilya.enkovich@intel.com>2014-10-03 08:43:21 +0000
committerKirill Yukhin <kyukhin@gcc.gnu.org>2014-10-03 08:43:21 +0000
commit54bddf1d58d0ff4c2625a0310b8ff7853d73b871 (patch)
treecb18144264106e9531c4d4df7a79d5ff50b16098 /gcc/caller-save.c
parentf598c55c56f71b77771190284c852601cf3edd0d (diff)
downloadgcc-54bddf1d58d0ff4c2625a0310b8ff7853d73b871.tar.gz
lra-constraints.c (inherit_in_ebb): Handle calls with multiple return values.
gcc/ * lra-constraints.c (inherit_in_ebb): Handle calls with multiple return values. * caller-save.c (save_call_clobbered_regs): Likewise. From-SVN: r215839
Diffstat (limited to 'gcc/caller-save.c')
-rw-r--r--gcc/caller-save.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/caller-save.c b/gcc/caller-save.c
index 11df2ecc171..e28facba7be 100644
--- a/gcc/caller-save.c
+++ b/gcc/caller-save.c
@@ -879,8 +879,13 @@ save_call_clobbered_regs (void)
if (GET_CODE (pat) == PARALLEL)
pat = XVECEXP (pat, 0, 0);
dest = SET_DEST (pat);
- newpat = gen_rtx_SET (VOIDmode, cheap, copy_rtx (dest));
- chain = insert_one_insn (chain, 0, -1, newpat);
+ /* For multiple return values dest is PARALLEL.
+ Currently we handle only single return value case. */
+ if (REG_P (dest))
+ {
+ newpat = gen_rtx_SET (VOIDmode, cheap, copy_rtx (dest));
+ chain = insert_one_insn (chain, 0, -1, newpat);
+ }
}
}
last = chain;