re PR tree-optimization/17111 (tree check ICE in value_insert_into_set_bitmap on...
authorDaniel Berlin <dberlin@dberlin.org>
Fri, 20 Aug 2004 16:48:00 +0000 (16:48 +0000)
committerDaniel Berlin <dberlin@gcc.gnu.org>
Fri, 20 Aug 2004 16:48:00 +0000 (16:48 +0000)
2004-08-20  Daniel Berlin  <dberlin@dberlin.org>

Fix PR tree-optimization/17111
* tree-ssa-pre.c (create_value_expr_from): Don't change the types
of non-value_handles.
(bitmap_set_contains): All constants are in every set.

From-SVN: r86331

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

index eaadc038c3290240aac5af9cdf526d6f0c74c66d..1ec68113158b7c2885e3cb585f2ce92ea3d01e74 100644 (file)
@@ -1,3 +1,10 @@
+2004-08-20  Daniel Berlin  <dberlin@dberlin.org>
+       
+       Fix PR tree-optimization/17111
+       * tree-ssa-pre.c (create_value_expr_from): Don't change the types
+       of non-value_handles.
+       (bitmap_set_contains): All constants are in every set.
+
 2004-08-20  Nathan Sidwell  <nathan@codesourcery.com>
 
        * fold-const.c (round_up, round_down): Use build_int_cst.
index 95ee573aa1a47483a1f23070f9816ee54798d2df..1267a546b0b7499d20e24ee572f6243cb8c315ed 100644 (file)
@@ -629,6 +629,10 @@ set_contains_value (value_set_t set, tree val)
 static bool
 bitmap_set_contains (bitmap_set_t set, tree expr)
 {
+  /* All constants are in every set.  */
+  if (is_gimple_min_invariant (get_value_handle (expr)))
+    return true;
+
   /* XXX: Bitmapped sets only contain SSA_NAME's for now.  */
   if (TREE_CODE (expr) != SSA_NAME)
     return false;
@@ -734,6 +738,7 @@ static void
 bitmap_value_insert_into_set (bitmap_set_t set, tree expr)
 {
   tree val = get_value_handle (expr);
+
   if (is_gimple_min_invariant (val))
     return;
   
@@ -1701,7 +1706,8 @@ create_value_expr_from (tree expr, basic_block block, vuse_optype vuses)
          tree val = vn_lookup_or_add (op, vuses);
          if (!is_undefined_value (op))
            value_insert_into_set (EXP_GEN (block), op);
-         TREE_TYPE (val) = TREE_TYPE (TREE_OPERAND (vexpr, i));
+         if (TREE_CODE (val) == VALUE_HANDLE)
+           TREE_TYPE (val) = TREE_TYPE (TREE_OPERAND (vexpr, i));
          TREE_OPERAND (vexpr, i) = val;
        }
     }