Commit 8fb1e50e by Graham Stott Committed by Graham Stott

* cse.c (cse_insn): Emit BARRIER after unconditional jump.

From-SVN: r46824
parent b972dd02
2001-11-07 Graham Stott <grahams@redhat.com>
* cse.c (cse_insn): Emit BARRIER after unconditional jump.
Wed Nov 7 13:33:34 CET 2001 Jan Hubicka <jh@suse.cz>
* expmed.c (expand_mult): Force operand to register before computing
......
......@@ -5767,6 +5767,11 @@ cse_insn (insn, libcall_insn)
be a conditional or computed branch. */
else if (dest == pc_rtx && GET_CODE (src) == LABEL_REF)
{
/* Now emit a BARRIER after the unconditional jump. */
if (NEXT_INSN (insn) == 0
|| GET_CODE (NEXT_INSN (insn)) != BARRIER)
emit_barrier_after (insn);
/* We reemit the jump in as many cases as possible just in
case the form of an unconditional jump is significantly
different than a computed jump or conditional jump.
......@@ -5777,20 +5782,23 @@ cse_insn (insn, libcall_insn)
if (n_sets == 1)
{
rtx new = emit_jump_insn_before (gen_jump (XEXP (src, 0)), insn);
JUMP_LABEL (new) = XEXP (src, 0);
LABEL_NUSES (XEXP (src, 0))++;
insn = new;
/* Now emit a BARRIER after the unconditional jump. */
if (NEXT_INSN (insn) == 0
|| GET_CODE (NEXT_INSN (insn)) != BARRIER)
emit_barrier_after (insn);
}
else
INSN_CODE (insn) = -1;
never_reached_warning (insn);
/* Now emit a BARRIER after the unconditional jump. Do not bother
deleting any unreachable code, let jump/flow do that. */
if (NEXT_INSN (insn) != 0
&& GET_CODE (NEXT_INSN (insn)) != BARRIER)
emit_barrier_after (insn);
/* Do not bother deleting any unreachable code,
let jump/flow do that. */
cse_jumps_altered = 1;
sets[i].rtl = 0;
......
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