re PR tree-optimization/32705 (ICE in set_ssa_val_to, at tree-ssa-sccvn.c:1022)
authorEric Botcazou <ebotcazou@adacore.com>
Sat, 14 Jul 2007 08:43:48 +0000 (08:43 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Sat, 14 Jul 2007 08:43:48 +0000 (08:43 +0000)
PR tree-optimization/32705
* tree-ssa-sccvn.c (set_ssa_val_to): Accept VN_TOP as value number.
(simplify_binary_expression): Use SSA_VAL consistently.

From-SVN: r126637

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

index 1057ccba8b10d4fe2b13826980ee42da0dbad0c4..4002720655f39f8fa8989f987c096e6eea1d1512 100644 (file)
@@ -1,3 +1,9 @@
+2007-07-14  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR tree-optimization/32705
+       * tree-ssa-sccvn.c (set_ssa_val_to): Accept VN_TOP as value number.
+       (simplify_binary_expression): Use SSA_VAL consistently.
+
 2007-07-13  David Edelsohn  <edelsohn@gnu.org>
 
        * config/rs6000/spe.md (SPE_ACC_REGNO): Delete definition.
index a04bb2157bffb997f75c6f68a707e7b9fb23d116..53e680c383ae7ae07cea85fe9ca994061fda4894 100644 (file)
@@ -1017,11 +1017,13 @@ static inline bool
 set_ssa_val_to (tree from, tree to)
 {
   tree currval;
-  gcc_assert (to != NULL);
 
-  /* The only thing we allow as value numbers are ssa_names and
-     invariants.  So assert that here.  */
-  gcc_assert (TREE_CODE (to) == SSA_NAME || is_gimple_min_invariant (to));
+  /* The only thing we allow as value numbers are VN_TOP, ssa_names
+     and invariants.  So assert that here.  */
+  gcc_assert (to != NULL_TREE
+             && (to == VN_TOP
+                 || TREE_CODE (to) == SSA_NAME
+                 || is_gimple_min_invariant (to)));
 
   if (dump_file && (dump_flags & TDF_DETAILS))
     {
@@ -1389,7 +1391,7 @@ simplify_binary_expression (tree rhs)
       if (VN_INFO (op0)->has_constants)
        op0 = valueize_expr (VN_INFO (op0)->expr);
       else if (SSA_VAL (op0) != VN_TOP && SSA_VAL (op0) != op0)
-       op0 = VN_INFO (op0)->valnum;      
+       op0 = SSA_VAL (op0);
     }
 
   if (TREE_CODE (op1) == SSA_NAME)
@@ -1397,7 +1399,7 @@ simplify_binary_expression (tree rhs)
       if (VN_INFO (op1)->has_constants)
        op1 = valueize_expr (VN_INFO (op1)->expr);
       else if (SSA_VAL (op1) != VN_TOP && SSA_VAL (op1) != op1)
-       op1 = VN_INFO (op1)->valnum;
+       op1 = SSA_VAL (op1);
     }
 
   result = fold_binary (TREE_CODE (rhs), TREE_TYPE (rhs), op0, op1);