* config/h8300/h8300.c (compute_a_shift_length): Fix the insn
authorkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 22 Nov 2002 14:16:12 +0000 (14:16 +0000)
committerkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 22 Nov 2002 14:16:12 +0000 (14:16 +0000)
length computation when xor.l is output.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@59376 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/h8300/h8300.c

index c88988d..e6b918f 100644 (file)
@@ -1,3 +1,8 @@
+2002-11-22  Kazu Hirata  <kazu@cs.umass.edu>
+
+       * config/h8300/h8300.c (compute_a_shift_length): Fix the insn
+       length computation when xor.l is output.
+
 2002-11-21  Jim Wilson  <wilson@redhat.com>
 
        * config/rs6000/rs6000.c (function_arg): Set inner mode of SPE
index 607259b..b4d40fd 100644 (file)
@@ -3096,6 +3096,14 @@ compute_a_shift_length (insn, operands)
        {
        case SHIFT_SPECIAL:
          wlength += h8300_asm_insn_count (info.special);
+
+         /* Every assembly instruction used in SHIFT_SPECIAL case
+            takes 2 bytes except xor.l, which takes 4 bytes, so if we
+            see xor.l, we just pretend that xor.l counts as two insns
+            so that the insn length will be computed correctly.  */
+         if (strstr (info.special, "xor.l") != NULL)
+           wlength++;
+
          /* Fall through.  */
 
        case SHIFT_INLINE: