summaryrefslogtreecommitdiff
path: root/gcc/config/sh/sh.c
diff options
context:
space:
mode:
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>1996-06-27 15:05:07 +0000
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>1996-06-27 15:05:07 +0000
commit2a9e0d474333053f4f94050312572cea772a8022 (patch)
treeda22cc402e32f580d764602cf0b8d8c08a145e7a /gcc/config/sh/sh.c
parent1c4be06beb63a544f0a6c3f8773a3f3de659b831 (diff)
downloadgcc-2a9e0d474333053f4f94050312572cea772a8022.tar.gz
Don't call ADJUST_INSN_LENGTH on an insn inside a sequence
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@12336 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/sh/sh.c')
-rw-r--r--gcc/config/sh/sh.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index d3f1e0f03ad..7e0d8cc8f96 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -556,10 +556,16 @@ output_branch (logic, insn, operands)
int adjusted_length;
/* Undo the effects of ADJUST_INSN_LENGTH, so that we get the real
- length. */
- adjusted_length = length;
- ADJUST_INSN_LENGTH (insn, adjusted_length);
- length -= (adjusted_length - length);
+ length. If NEXT_INSN (PREV_INSN (insn)) != insn, then the insn
+ is inside a sequence, and ADJUST_INSN_LENGTH was not called on
+ it. */
+ if (PREV_INSN (insn) == NULL
+ || NEXT_INSN (PREV_INSN (insn)) == insn)
+ {
+ adjusted_length = length;
+ ADJUST_INSN_LENGTH (insn, adjusted_length);
+ length -= (adjusted_length - length);
+ }
switch (length)
{