From: Graham Stott Date: Wed, 7 Nov 2001 12:57:17 +0000 (+0000) Subject: * cse.c (cse_insn): Emit BARRIER after unconditional jump. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8fb1e50e912ce7132fb701a1ff007414ca5c4a3e;p=gcc.git * cse.c (cse_insn): Emit BARRIER after unconditional jump. From-SVN: r46824 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fcac3da9a70..ed6baecf279 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2001-11-07 Graham Stott + + * cse.c (cse_insn): Emit BARRIER after unconditional jump. + Wed Nov 7 13:33:34 CET 2001 Jan Hubicka * expmed.c (expand_mult): Force operand to register before computing diff --git a/gcc/cse.c b/gcc/cse.c index ad6c62030fe..e0c5fb03d62 100644 --- a/gcc/cse.c +++ b/gcc/cse.c @@ -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;