aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2001-01-11 20:03:09 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2001-01-11 20:03:09 +0000
commit1594c6bcecdb10d7e5d14029d64734352d18ae55 (patch)
treea2cc872c87f259678bf716cd0591bbb0aecfdb55
parentd396403a85a822c6e6ee275ef2be1de2b32ea697 (diff)
downloadgcc-1594c6bcecdb10d7e5d14029d64734352d18ae55.zip
gcc-1594c6bcecdb10d7e5d14029d64734352d18ae55.tar.gz
gcc-1594c6bcecdb10d7e5d14029d64734352d18ae55.tar.bz2
sh.c (barrier_align): Recognize branch around far branch and redundant insn.
* config/sh/sh.c (barrier_align): Recognize branch around far branch and redundant insn. From-SVN: r38923
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/sh/sh.c6
2 files changed, 10 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5189ef8..6c1b1fe 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2001-01-11 Alexandre Oliva <aoliva@redhat.com>
+
+ * config/sh/sh.c (barrier_align): Recognize branch around far
+ branch and redundant insn.
+
2001-01-11 Neil Booth <neil@daikokuya.demon.co.uk>
* invoke.texi: Restore documentation of the drivers' switches -MD
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index 158714c..b73ab59 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -2862,7 +2862,11 @@ barrier_align (barrier_or_label)
if (prev
&& GET_CODE (prev) == JUMP_INSN
&& JUMP_LABEL (prev)
- && (jump_to_next || next_real_insn (JUMP_LABEL (prev)) == next))
+ && (jump_to_next || next_real_insn (JUMP_LABEL (prev)) == next
+ /* If relax_delay_slots() decides NEXT was redundant
+ with some previous instruction, it will have
+ redirected PREV's jump to the following insn. */
+ || JUMP_LABEL (prev) == next_nonnote_insn (next)))
{
rtx pat = PATTERN (prev);
if (GET_CODE (pat) == PARALLEL)