Commit 54bddf1d by Ilya Enkovich Committed by Kirill Yukhin

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
parent f598c55c
2014-10-03 Ilya Enkovich <ilya.enkovich@intel.com>
* lra-constraints.c (inherit_in_ebb): Handle calls with
multiple return values.
* caller-save.c (save_call_clobbered_regs): Likewise.
2014-10-03 Jakub Jelinek <jakub@redhat.com>
* tree-vect-data-refs.c (vect_permute_load_chain,
......@@ -879,10 +879,15 @@ save_call_clobbered_regs (void)
if (GET_CODE (pat) == PARALLEL)
pat = XVECEXP (pat, 0, 0);
dest = SET_DEST (pat);
/* 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;
}
else if (DEBUG_INSN_P (insn) && n_regs_saved)
......
......@@ -5348,6 +5348,10 @@ inherit_in_ebb (rtx_insn *head, rtx_insn *tail)
if (GET_CODE (pat) == PARALLEL)
pat = XVECEXP (pat, 0, 0);
dest = SET_DEST (pat);
/* 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 ();
......@@ -5360,6 +5364,7 @@ inherit_in_ebb (rtx_insn *head, rtx_insn *tail)
bitmap_set_bit (&check_only_regs, regno);
}
}
}
to_inherit_num = 0;
/* Process insn usages. */
for (iter = 0; iter < 2; iter++)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment