2004-08-20 Daniel Berlin <dberlin@dberlin.org>
authordberlin <dberlin@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 20 Aug 2004 16:48:00 +0000 (16:48 +0000)
committerdberlin <dberlin@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 20 Aug 2004 16:48:00 +0000 (16:48 +0000)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@86331 138bc75d-0d04-0410-961f-82ee72b054a4

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

index eaadc03..1ec6811 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 95ee573..1267a54 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;
        }
     }