re PR tree-optimization/83517 (Missed optimization in math expression: (x+x)/x == 2)
authorRichard Biener <rguenther@suse.de>
Mon, 8 Jan 2018 08:16:19 +0000 (08:16 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Mon, 8 Jan 2018 08:16:19 +0000 (08:16 +0000)
2018-01-08  Richard Biener  <rguenther@suse.de>

PR middle-end/83517
* match.pd ((t * 2) / 2) -> t): Add missing :c.

* gcc.dg/pr83517.c: New testcase.

From-SVN: r256328

gcc/ChangeLog
gcc/match.pd
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr83517.c [new file with mode: 0644]

index f6fe407051aac4d6562223f71015cbd9c6a67c8e..5de2348dd21ad4747977f6e5c77580481e6bafc3 100644 (file)
@@ -1,3 +1,8 @@
+2018-01-08  Richard Biener  <rguenther@suse.de>
+
+       PR middle-end/83517
+       * match.pd ((t * 2) / 2) -> t): Add missing :c.
+
 2018-01-06  Aldy Hernandez  <aldyh@redhat.com>
 
        PR middle-end/81897
index f189cb19b4188b400aac00e30961e292151c9910..915c20f5e12761be5a8a117f3afd68d0ed2d478a 100644 (file)
@@ -510,7 +510,7 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
 /* Simplify (t * 2) / 2) -> t.  */
 (for div (trunc_div ceil_div floor_div round_div exact_div)
  (simplify
-  (div (mult @0 @1) @1)
+  (div (mult:c @0 @1) @1)
   (if (ANY_INTEGRAL_TYPE_P (type)
        && TYPE_OVERFLOW_UNDEFINED (type))
    @0)))
index 218e7821df7de923d7d91215f46e91292a0515ed..9ec2e81dc56238778519f83d85855f81fe482651 100644 (file)
@@ -1,3 +1,8 @@
+2018-01-08  Richard Biener  <rguenther@suse.de>
+
+       PR middle-end/83517
+       * gcc.dg/pr83517.c: New testcase.
+
 2018-01-06  Aldy Hernandez  <aldyh@redhat.com>
 
        PR middle-end/81897
diff --git a/gcc/testsuite/gcc.dg/pr83517.c b/gcc/testsuite/gcc.dg/pr83517.c
new file mode 100644 (file)
index 0000000..9dadbde
--- /dev/null
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-options "-fdump-tree-original" } */
+
+int test(int x)
+{
+  return (x+x)/x;
+}
+
+/* { dg-final { scan-tree-dump "return 2;" "original" } } */