re PR ada/68590 (FAIL: gnat.dg/loop_optimization19.adb scan-tree-dump-not optimized...
authorRichard Biener <rguenther@suse.de>
Tue, 1 Dec 2015 08:52:58 +0000 (08:52 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Tue, 1 Dec 2015 08:52:58 +0000 (08:52 +0000)
2015-12-01  Richard Biener  <rguenther@suse.de>

PR middle-end/68590
* match.pd: Merge (eq @0 @0) and (ge/le @0 @0) patterns.

From-SVN: r231100

gcc/ChangeLog
gcc/match.pd

index c1114532c2e2c6324b75a2093ab541bd62d3ea91..800645ac4538fc6a8dfaae8f28203bfcfe62e237 100644 (file)
@@ -1,3 +1,8 @@
+2015-12-01  Richard Biener  <rguenther@suse.de>
+
+       PR middle-end/68590
+       * match.pd: Merge (eq @0 @0) and (ge/le @0 @0) patterns.
+
 2015-12-01  Jan Hubicka  <hubicka@ucw.cz>
 
        * ipa-devirt.c (type_with_linkage_p, type_in_anonymous_namespace_p,
index e86cc8b6efbde5ebb7d3a203018c0f4a22cf8f38..ea512fb20b9903fbb6e7d5e4e6d7ab244ef346af 100644 (file)
@@ -1828,15 +1828,14 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
  
 /* Simplify comparison of something with itself.  For IEEE
    floating-point, we can only do some of these simplifications.  */
-(simplify
- (eq @0 @0)
- (if (! FLOAT_TYPE_P (TREE_TYPE (@0))
-      || ! HONOR_NANS (TYPE_MODE (TREE_TYPE (@0))))
-  { constant_boolean_node (true, type); }))
-(for cmp (ge le)
+(for cmp (eq ge le)
  (simplify
   (cmp @0 @0)
-  (eq @0 @0)))
+  (if (! FLOAT_TYPE_P (TREE_TYPE (@0))
+       || ! HONOR_NANS (TYPE_MODE (TREE_TYPE (@0))))
+   { constant_boolean_node (true, type); }
+   (if (cmp != EQ_EXPR)
+    (eq @0 @0)))))
 (for cmp (ne gt lt)
  (simplify
   (cmp @0 @0)