2006-06-19 Richard Guenther <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 19 Jun 2006 19:48:04 +0000 (19:48 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 19 Jun 2006 19:48:04 +0000 (19:48 +0000)
* tree-ssa-pre.c (try_combine_conversion): Strip useless
type conversions after folding.

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

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

index 50d8902..81535ec 100644 (file)
@@ -1,5 +1,10 @@
 2006-06-19  Richard Guenther  <rguenther@suse.de>
 
+       * tree-ssa-pre.c (try_combine_conversion): Strip useless
+       type conversions after folding.
+
+2006-06-19  Richard Guenther  <rguenther@suse.de>
+
        * ggc-page.c (extra_order_size_tab): Add entries with
        size of struct function and basic_block.
        (size_lookup): Extend to cover sizes up to 511.
index 7ae481b..54c6eb3 100644 (file)
@@ -3330,12 +3330,17 @@ try_combine_conversion (tree *expr_p)
 
   t = fold_unary (TREE_CODE (expr), TREE_TYPE (expr),
                  VALUE_HANDLE_EXPR_SET (TREE_OPERAND (expr, 0))->head->expr);
+  if (!t)
+    return false;
+
+  /* Strip useless type conversions, which is safe in the optimizers but
+     not generally in fold.  */
+  STRIP_USELESS_TYPE_CONVERSION (t);
 
   /* Disallow value expressions we have no value number for already, as
      we would miss a leader for it here.  */
-  if (t
-      && !(TREE_CODE (t) == VALUE_HANDLE
-          || is_gimple_min_invariant (t)))
+  if (!(TREE_CODE (t) == VALUE_HANDLE
+       || is_gimple_min_invariant (t)))
     t = vn_lookup (t, NULL);
 
   if (t && t != expr)