re PR middle-end/65788 (416.gamess in SPEC CPU 2006 failed to build)
authorRichard Biener <rguenther@suse.de>
Tue, 21 Apr 2015 12:38:32 +0000 (12:38 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Tue, 21 Apr 2015 12:38:32 +0000 (12:38 +0000)
2015-04-21  Richard Biener  <rguenther@suse.de>

PR tree-optimization/65788
* tree-ssa-ccp.c (evaluate_stmt): Evaluate to UNDEFINED early.

From-SVN: r222266

gcc/ChangeLog
gcc/tree-ssa-ccp.c

index 791db049d58fb63741dca2f2283d0ee47f26bb50..19b0ed417e707c3762202e3df3ec0941833fc828 100644 (file)
@@ -1,3 +1,8 @@
+2015-04-21  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/65788
+       * tree-ssa-ccp.c (evaluate_stmt): Evaluate to UNDEFINED early.
+
 2015-04-21  Richard Biener  <rguenther@suse.de>
 
        * config/i386/i386.c (ix86_builtin_vectorization_cost): Scale
index 79f6afbed9820b090a625bbc8201bfc861e92759..47fbf7f113e7f3e18c019de605d1d517b0255422 100644 (file)
@@ -1756,6 +1756,14 @@ evaluate_stmt (gimple stmt)
          val.mask = 0;
        }
     }
+  /* If the statement result is likely UNDEFINED, make it so.  */
+  else if (likelyvalue == UNDEFINED)
+    {
+      val.lattice_val = UNDEFINED;
+      val.value = NULL_TREE;
+      val.mask = 0;
+      return val;
+    }
 
   /* Resort to simplification for bitwise tracking.  */
   if (flag_tree_bit_ccp
@@ -1890,7 +1898,7 @@ evaluate_stmt (gimple stmt)
 
   if (flag_tree_bit_ccp
       && ((is_constant && TREE_CODE (val.value) == INTEGER_CST)
-         || (!is_constant && likelyvalue != UNDEFINED))
+         || !is_constant)
       && gimple_get_lhs (stmt)
       && TREE_CODE (gimple_get_lhs (stmt)) == SSA_NAME)
     {
@@ -1918,22 +1926,11 @@ evaluate_stmt (gimple stmt)
        }
     }
 
+  /* The statement produced a nonconstant value.  */
   if (!is_constant)
     {
-      /* The statement produced a nonconstant value.  If the statement
-        had UNDEFINED operands, then the result of the statement
-        should be UNDEFINED.  Otherwise, the statement is VARYING.  */
-      if (likelyvalue == UNDEFINED)
-       {
-         val.lattice_val = likelyvalue;
-         val.mask = 0;
-       }
-      else
-       {
-         val.lattice_val = VARYING;
-         val.mask = -1;
-       }
-
+      val.lattice_val = VARYING;
+      val.mask = -1;
       val.value = NULL_TREE;
     }