From 5d291213315a18afad4054e4cdcfdd303ed42fd2 Mon Sep 17 00:00:00 2001 From: "J\"orn Rennecke" Date: Wed, 20 Jun 2001 16:04:31 +0000 Subject: [PATCH] sh.c (barrier_align): Don't ask for alignment when seeing a branch-around-a-jump from... * sh.c (barrier_align): Don't ask for alignment when seeing a branch-around-a-jump from machine_dependent_reorg. From-SVN: r43474 --- gcc/ChangeLog | 5 +++++ gcc/config/sh/sh.c | 10 +++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2a4c502e304..f4d3494bdc3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Wed Jun 20 17:02:50 2001 J"orn Rennecke + + * 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 8afb976381b..30d890e8dca 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)