re PR middle-end/25529 ((unsigned * 2)/2 is not changed into unsigned &0x7FFFFFFF)
authorNaveen H.S <Naveen.Hurugalawadi@caviumnetworks.com>
Thu, 13 Aug 2015 04:37:22 +0000 (04:37 +0000)
committerNaveen H.S <naveenh@gcc.gnu.org>
Thu, 13 Aug 2015 04:37:22 +0000 (04:37 +0000)
2015-08-13  Naveen H.S  <Naveen.Hurugalawadi@caviumnetworks.com>

PR middle-end/25529
* match.pd (div (mult @0 @1) @1) : New simplifier.

From-SVN: r226847

gcc/ChangeLog
gcc/match.pd

index 65a4f2a0012f13efcbb32f8ea3748af92b8038f8..67f9a11aba767e5ec481ce694f854ddfd6b9a1d5 100644 (file)
@@ -1,3 +1,8 @@
+2015-08-13  Naveen H.S  <Naveen.Hurugalawadi@caviumnetworks.com>
+
+       PR middle-end/25529
+       * match.pd (div (mult @0 @1) @1) : New simplifier.
+
 2015-08-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
 
        PR target/67071
index 4230f9a7d18164bd606d86c484ac81938163a9e4..42b9951c12214cd713cff2559a37ed5f067e2417 100644 (file)
@@ -296,6 +296,14 @@ along with GCC; see the file COPYING3.  If not see
  (if (TYPE_UNSIGNED (TREE_TYPE (@0)))
   (bit_and @0 (negate @1))))
 
+/* Simplify (t * 2) / 2) -> t.  */
+(for div (trunc_div ceil_div floor_div round_div exact_div)
+ (simplify
+  (div (mult @0 @1) @1)
+  (if (ANY_INTEGRAL_TYPE_P (type)
+       && TYPE_OVERFLOW_UNDEFINED (type))
+   @0)))
+
 /* X % Y is smaller than Y.  */
 (for cmp (lt ge)
  (simplify