From 5d291213315a18afad4054e4cdcfdd303ed42fd2 Mon Sep 17 00:00:00 2001 From: "J\"orn Rennecke" Date: Wed, 20 Jun 2001 16:04:31 +0000 Subject: 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/config/sh/sh.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'gcc/config/sh/sh.c') 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) -- cgit v1.1