aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/sh/sh.c10
2 files changed, 14 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2a4c502..f4d3494 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Wed Jun 20 17:02:50 2001 J"orn Rennecke <amylaar@redhat.com>
+
+ * sh.c (barrier_align): Don't ask for alignment when seeing a
+ branch-around-a-jump from machine_dependent_reorg.
+
Wed Jun 20 08:35:02 2001 Jeffrey A Law (law@cygnus.com)
* ssa.c (rename_block): Update parameter to remove_phi_alternative
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index 8afb976..30d890e 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -2941,7 +2941,15 @@ barrier_align (barrier_or_label)
/* 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)))
+ || JUMP_LABEL (prev) == next_nonnote_insn (next)
+ /* There is no upper bound on redundant instructions that
+ might have been skipped, but we must not put an alignment
+ where none had been before. */
+ || (NEXT_INSN (PREV_INSN (prev)) != prev
+ && ((INSN_CODE (NEXT_INSN (NEXT_INSN (prev)))
+ == CODE_FOR_block_branch_redirect)
+ || (INSN_CODE (NEXT_INSN (NEXT_INSN (prev)))
+ == CODE_FOR_indirect_jump_scratch)))))
{
rtx pat = PATTERN (prev);
if (GET_CODE (pat) == PARALLEL)