Canonicalize X u< X to UNORDERED_EXPR
authorMarc Glisse <marc.glisse@inria.fr>
Mon, 2 May 2016 14:32:53 +0000 (16:32 +0200)
committerMarc Glisse <glisse@gcc.gnu.org>
Mon, 2 May 2016 14:32:53 +0000 (14:32 +0000)
2016-05-02  Marc Glisse  <marc.glisse@inria.fr>

gcc/
* match.pd (X u< X, X u> X): New transformations.

gcc/testsuite/
* gcc.dg/tree-ssa/unord.c: New testcase.

From-SVN: r235761

gcc/ChangeLog
gcc/match.pd
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/tree-ssa/unord.c [new file with mode: 0644]

index 10bf855f351f6fdcf7f28351f45ca8cc33dc0e61..435a9622761ed0800f45405a3797f2f4b51a5dc8 100644 (file)
@@ -1,3 +1,7 @@
+2016-05-02  Marc Glisse  <marc.glisse@inria.fr>
+
+       * match.pd (X u< X, X u> X): New transformations.
+
 2016-05-02  Marc Glisse  <marc.glisse@inria.fr>
 
        * flag-types.h (enum warn_strict_overflow_code): Move ...
index f1b1f15412568896f91f44f2ba01780d4da02b00..8de8858b15114580a9f71f2eae3bdb8666e8b9de 100644 (file)
@@ -1921,6 +1921,10 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
  (simplify
   (cmp @0 @0)
   { constant_boolean_node (true, type); }))
+(for cmp (unlt ungt)
+ (simplify
+  (cmp @0 @0)
+  (unordered @0 @0)))
 (simplify
  (ltgt @0 @0)
  (if (!flag_trapping_math)
index f40758432842b288d2c4796f799f624f88f87398..2ea3d7700e3fe205e4a9b46cb64e93a502b40c94 100644 (file)
@@ -1,3 +1,7 @@
+2016-05-02  Marc Glisse  <marc.glisse@inria.fr>
+
+       * gcc.dg/tree-ssa/unord.c: New testcase.
+
 2016-05-02  Marc Glisse  <marc.glisse@inria.fr>
 
        * gcc.dg/tree-ssa/20040305-1.c: Adjust.
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/unord.c b/gcc/testsuite/gcc.dg/tree-ssa/unord.c
new file mode 100644 (file)
index 0000000..e092792
--- /dev/null
@@ -0,0 +1,7 @@
+/* { dg-do compile } */
+/* { dg-options "-O -fdump-tree-optimized" } */
+
+int f(double a){double b=a;return !__builtin_islessequal(a,b);}
+int g(double a){double b=a;return !__builtin_isgreaterequal(a,b);}
+
+/* { dg-final { scan-tree-dump-times " unord " 2 "optimized" } } */