re PR c/67107 (ICE: SIGSEGV in tree_class_check with -frounding-math -funsafe-math...
authorRichard Biener <rguenther@suse.de>
Wed, 5 Aug 2015 07:42:54 +0000 (07:42 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 5 Aug 2015 07:42:54 +0000 (07:42 +0000)
2015-08-05  Richard Biener  <rguenther@suse.de>

PR middle-end/67107
* match.pd: Guard const_binop result checking against NULL_TREE
result.

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

From-SVN: r226609

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

index 9c8e1765d31fb5ff324fade538b7ffbc33aa54e5..09a89eef4099a7fe5624311fd6714afdde733b06 100644 (file)
@@ -1,3 +1,9 @@
+2015-08-05  Richard Biener  <rguenther@suse.de>
+
+       PR middle-end/67107
+       * match.pd: Guard const_binop result checking against NULL_TREE
+       result.
+
 2015-08-05  Kugan Vivekanandarajah  <kuganv@linaro.org>
 
        * cse.c (cse_insn): Restoring old behaviour for src_eqv
index 3e9100e81f0e1589a2f6cd984b5b2bafaf279d14..2a4f7d698e41dd0a753f9d9ac372c91104c7b44c 100644 (file)
@@ -1599,7 +1599,7 @@ along with GCC; see the file COPYING3.  If not see
        tree tem = const_binop (op == PLUS_EXPR ? MINUS_EXPR : PLUS_EXPR,
                               TREE_TYPE (@1), @2, @1);
      }
-     (if (!TREE_OVERFLOW (tem))
+     (if (tem && !TREE_OVERFLOW (tem))
       (cmp @0 { tem; }))))))
 
  /* Likewise, we can simplify a comparison of a real constant with
@@ -1610,7 +1610,7 @@ along with GCC; see the file COPYING3.  If not see
   (simplify
    (cmp (minus REAL_CST@0 @1) REAL_CST@2)
    (with { tree tem = const_binop (MINUS_EXPR, TREE_TYPE (@1), @0, @2); }
-    (if (!TREE_OVERFLOW (tem))
+    (if (tem && !TREE_OVERFLOW (tem))
      (cmp { tem; } @1)))))
 
  /* Fold comparisons against built-in math functions.  */
index 8471c040c661b3b46d9a79ee59156824d492bb40..1a5d6f932aebcc517ff4f6e2222088ab3be034aa 100644 (file)
@@ -1,3 +1,8 @@
+2015-08-05  Richard Biener  <rguenther@suse.de>
+
+       PR middle-end/67107
+       * gcc.dg/pr67107.c: New testcase.
+
 2015-08-04  Paolo Carlini  <paolo.carlini@oracle.com>
 
        PR c++/66197
diff --git a/gcc/testsuite/gcc.dg/pr67107.c b/gcc/testsuite/gcc.dg/pr67107.c
new file mode 100644 (file)
index 0000000..e2e11c0
--- /dev/null
@@ -0,0 +1,7 @@
+/* { dg-do compile } */
+/* { dg-options "-frounding-math -funsafe-math-optimizations" } */
+
+int test ()
+{
+  return 5.0 < 5.0 - 0.1;
+}