aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>1996-06-27 15:05:07 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>1996-06-27 15:05:07 +0000
commit9c0e838fa0e2cdbe96f40b4d209ed83540040148 (patch)
treeda22cc402e32f580d764602cf0b8d8c08a145e7a
parent458c16f71e1ba5e22baee6038f0042e97856c419 (diff)
downloadgcc-9c0e838fa0e2cdbe96f40b4d209ed83540040148.zip
gcc-9c0e838fa0e2cdbe96f40b4d209ed83540040148.tar.gz
gcc-9c0e838fa0e2cdbe96f40b4d209ed83540040148.tar.bz2
Don't call ADJUST_INSN_LENGTH on an insn inside a sequence
From-SVN: r12336
-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 d3f1e0f..7e0d8cc 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)
{