re PR target/54236 ([SH] Improve addc and subc insn utilization)
authorOleg Endo <olegendo@gcc.gnu.org>
Thu, 21 May 2015 12:36:35 +0000 (12:36 +0000)
committerOleg Endo <olegendo@gcc.gnu.org>
Thu, 21 May 2015 12:36:35 +0000 (12:36 +0000)
gcc/
PR target/54236
* config/sh/sh.md (*round_int_even): Reject pattern if operands[0] and
operands[1] are the same.

gcc/testsuite/
PR target/54236
* gcc.target/sh/pr54236-2.c: Fix typo in comment.

From-SVN: r223479

gcc/ChangeLog
gcc/config/sh/sh.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/sh/pr54236-2.c

index 550d98c30ebbc76c30788d71cc2b99ea3bb090ce..9218257629fc190cc1510d304b73b1964878f931 100644 (file)
@@ -1,3 +1,9 @@
+2015-05-21  Oleg Endo  <olegendo@gcc.gnu.org>
+
+       PR target/54236
+       * config/sh/sh.md (*round_int_even): Reject pattern if operands[0] and
+       operands[1] are the same.
+
 2015-05-21  Ilya Enkovich  <enkovich.gnu@gmail.com>
 
        PR middle-end/66221
index 3b669928a201ebda44217ec2e493bd100c75f344..2d95b9c1e22d179d302cfd89c25cc493e1cecdb0 100644 (file)
        (and:SI (plus:SI (match_operand:SI 1 "arith_reg_operand")
                         (const_int 1))
                (const_int -2)))]
-  "TARGET_SH1 && !TARGET_SH2A && can_create_pseudo_p ()"
+  "TARGET_SH1 && !TARGET_SH2A && can_create_pseudo_p ()
+   && !reg_overlap_mentioned_p (operands[0], operands[1])"
   "#"
   "&& 1"
   [(set (match_dup 0) (const_int -2))
index 81f6779da058005029b2523bb6672f23a6c8beec..2cd1577e067e26a889c4871b73c46bf388ca742e 100644 (file)
@@ -1,3 +1,8 @@
+2015-05-21  Oleg Endo  <olegendo@gcc.gnu.org>
+
+       PR target/54236
+       * gcc.target/sh/pr54236-2.c: Fix typo in comment.
+
 2015-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
 
        PR target/65937
index b94c2c0a5e2fc232cfb54046b6e44a5ee1f48caf..c72afb929571507b896f0e1f93871490bd95b830 100644 (file)
@@ -133,7 +133,7 @@ int
 test_016 (int a, int b, int c, int d)
 {
   // non-SH2A: 1x add #1, 1x mov #-2, 1x and
-  // SH2A: 1x add #1, 1x blcr #0
+  // SH2A: 1x add #1, 1x bclr #0
   return a + (a & 1);
 }