Commit 8df1868d by Jeff Law Committed by Jeff Law

re PR target/83760 ([SH] ICE in maybe_record_trace_start building glibc tst-copy_file_range.c)

	PR target/83760
	* config/sh/sh.c (find_barrier): Consider a sibling call
	a barrier as well.

From-SVN: r257611
parent a4f197f5
2018-02-12 Jeff Law <law@redhat.com>
PR target/83760
* config/sh/sh.c (find_barrier): Consider a sibling call
a barrier as well.
* cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when
successfully back substituting a reg.
......
......@@ -5233,10 +5233,22 @@ find_barrier (int num_mova, rtx_insn *mova, rtx_insn *from)
CALL_ARG_LOCATION note. */
if (CALL_P (from))
{
bool sibcall_p = SIBLING_CALL_P (from);
rtx_insn *next = NEXT_INSN (from);
if (next && NOTE_P (next)
&& NOTE_KIND (next) == NOTE_INSN_CALL_ARG_LOCATION)
from = next;
/* If FROM was a sibling call, then we know that control
will not return. In fact, we were guaranteed to hit
a barrier before another real insn.
The jump around the constant pool is unnecessary. It
costs space, but more importantly it confuses dwarf2cfi
generation. */
if (sibcall_p)
return emit_barrier_after (from);
}
from = emit_jump_insn_after (gen_jump (label), from);
......
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