aboutsummaryrefslogtreecommitdiff
path: root/gcc/lra-constraints.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/lra-constraints.c
parentf598c55c56f71b77771190284c852601cf3edd0d (diff)
downloadgcc-54bddf1d58d0ff4c2625a0310b8ff7853d73b871.zip
gcc-54bddf1d58d0ff4c2625a0310b8ff7853d73b871.tar.gz
gcc-54bddf1d58d0ff4c2625a0310b8ff7853d73b871.tar.bz2
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/lra-constraints.c')
-rw-r--r--gcc/lra-constraints.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c
index 5f68399..f1642f3 100644
--- a/gcc/lra-constraints.c
+++ b/gcc/lra-constraints.c
@@ -5348,16 +5348,21 @@ inherit_in_ebb (rtx_insn *head, rtx_insn *tail)
if (GET_CODE (pat) == PARALLEL)
pat = XVECEXP (pat, 0, 0);
dest = SET_DEST (pat);
- start_sequence ();
- emit_move_insn (cheap, copy_rtx (dest));
- restore = get_insns ();
- end_sequence ();
- lra_process_new_insns (curr_insn, NULL, restore,
- "Inserting call parameter restore");
- /* We don't need to save/restore of the pseudo from
- this call. */
- usage_insns[regno].calls_num = calls_num;
- bitmap_set_bit (&check_only_regs, regno);
+ /* For multiple return values dest is PARALLEL.
+ Currently we handle only single return value case. */
+ if (REG_P (dest))
+ {
+ start_sequence ();
+ emit_move_insn (cheap, copy_rtx (dest));
+ restore = get_insns ();
+ end_sequence ();
+ lra_process_new_insns (curr_insn, NULL, restore,
+ "Inserting call parameter restore");
+ /* We don't need to save/restore of the pseudo from
+ this call. */
+ usage_insns[regno].calls_num = calls_num;
+ bitmap_set_bit (&check_only_regs, regno);
+ }
}
}
to_inherit_num = 0;