* config/h8300/h8300.c (two_insn_adds_subs_operand): Revise a
authorkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 8 Feb 2002 00:26:36 +0000 (00:26 +0000)
committerkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 8 Feb 2002 00:26:36 +0000 (00:26 +0000)
comment.  Accept HImode only if TARGET_H8300.

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

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

index 319bbd0..6b5136a 100644 (file)
@@ -1,3 +1,8 @@
+2002-02-07  Kazu Hirata  <kazu@hxi.com>
+
+       * config/h8300/h8300.c (two_insn_adds_subs_operand): Revise a
+       comment.  Accept HImode only if TARGET_H8300.
+
 2002-02-07  Eric Christopher  <echristo@redhat.com>
 
        * config/mips/crtn.asm: Cleanup #ifdefs.
index ea673fc..f861290 100644 (file)
@@ -632,12 +632,11 @@ two_insn_adds_subs_operand (op, mode)
        }
       else
        {
-         /* A constant addition/subtraction takes 2 states in
-            QImode. It takes 6 states in HImode, requiring the
-            constant to be loaded to a register first, and a lot more
-            in SImode.  Thus the only case we can win is when either
-            HImode or SImode is used.  */
-         if (mode != QImode
+         /* We do not profit directly by splitting addition or
+            subtraction of 3 and 4.  However, since these are
+            implemented as a sequence of adds or subs, they do not
+            clobber (cc0) unlike a sequence of add.b and add.x.  */
+         if (mode == HImode
              && (value == 2 + 1
                  || value == 2 + 2))
            return 1;