SOURCES: gcc-pr22493.patch (NEW), gcc-pr22358.patch (NEW), gcc-pr2...
pluto
pluto at pld-linux.org
Sun Jul 17 20:07:18 CEST 2005
Author: pluto Date: Sun Jul 17 18:07:18 2005 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- new patchset.
---- Files affected:
SOURCES:
gcc-pr22493.patch (NONE -> 1.1) (NEW), gcc-pr22358.patch (NONE -> 1.1) (NEW), gcc-pr22484.patch (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: SOURCES/gcc-pr22493.patch
diff -u /dev/null SOURCES/gcc-pr22493.patch:1.1
--- /dev/null Sun Jul 17 20:07:18 2005
+++ SOURCES/gcc-pr22493.patch Sun Jul 17 20:07:13 2005
@@ -0,0 +1,87 @@
+--- gcc/gcc/tree-vrp.c 2005-07-14 15:54:28.000000000 -0700
++++ gcc/gcc/tree-vrp.c.new 2005-07-16 17:25:25.000000000 -0700
+@@ -1267,6 +1267,7 @@ extract_range_from_unary_expr (value_ran
+ {
+ enum tree_code code = TREE_CODE (expr);
+ tree min, max, op0;
++ enum value_range_type vr_type;
+ int cmp;
+ value_range_t vr0 = { VR_UNDEFINED, NULL_TREE, NULL_TREE, NULL };
+
+@@ -1295,8 +1296,10 @@ extract_range_from_unary_expr (value_ran
+ else
+ set_value_range_to_varying (&vr0);
+
++ vr_type = vr0.type;
++
+ /* If VR0 is UNDEFINED, so is the result. */
+- if (vr0.type == VR_UNDEFINED)
++ if (vr_type == VR_UNDEFINED)
+ {
+ set_value_range_to_undefined (vr);
+ return;
+@@ -1306,7 +1309,7 @@ extract_range_from_unary_expr (value_ran
+ operand is neither a pointer nor an integral type, set the
+ resulting range to VARYING. TODO, in some cases we may be able
+ to derive anti-ranges (like non-zero values). */
+- if (vr0.type == VR_VARYING
++ if (vr_type == VR_VARYING
+ || (!INTEGRAL_TYPE_P (TREE_TYPE (op0))
+ && !POINTER_TYPE_P (TREE_TYPE (op0)))
+ || symbolic_range_p (&vr0))
+@@ -1342,7 +1345,7 @@ extract_range_from_unary_expr (value_ran
+ or equal to the new max, then we can safely use the newly
+ computed range for EXPR. This allows us to compute
+ accurate ranges through many casts. */
+- if (vr0.type == VR_RANGE)
++ if (vr_type == VR_RANGE)
+ {
+ tree new_min, new_max;
+
+@@ -1392,17 +1395,29 @@ extract_range_from_unary_expr (value_ran
+ return;
+ }
+
+- /* NEGATE_EXPR flips the range around. */
+- min = (vr0.max == TYPE_MAX_VALUE (TREE_TYPE (expr)))
+- ? TYPE_MIN_VALUE (TREE_TYPE (expr))
+- : fold_unary_to_constant (code, TREE_TYPE (expr), vr0.max);
++ if (flag_wrapv && vr0.min == TYPE_MIN_VALUE (TREE_TYPE (expr)))
++ {
++ tree one = build_int_cst (TREE_TYPE (expr), 1);
+
+- max = (vr0.min == TYPE_MIN_VALUE (TREE_TYPE (expr)))
+- ? TYPE_MAX_VALUE (TREE_TYPE (expr))
+- : fold_unary_to_constant (code, TREE_TYPE (expr), vr0.min);
++ type = VR_ANTI_RANGE;
++ max = fold_unary_to_constant (code, TREE_TYPE (expr), vr0.max);
++ max = int_const_binop (MINUS_EXPR, max, one, 0);
++ min = int_const_binop (PLUS_EXPR, min, one, 0);
++ }
++ else
++ {
++ /* NEGATE_EXPR flips the range around. */
++ min = (vr0.max == TYPE_MAX_VALUE (TREE_TYPE (expr)))
++ ? TYPE_MIN_VALUE (TREE_TYPE (expr))
++ : fold_unary_to_constant (code, TREE_TYPE (expr), vr0.max);
++
++ max = (vr0.min == TYPE_MIN_VALUE (TREE_TYPE (expr)))
++ ? TYPE_MAX_VALUE (TREE_TYPE (expr))
++ : fold_unary_to_constant (code, TREE_TYPE (expr), vr0.min);
++ }
+ }
+ else if (code == ABS_EXPR
+- && !TYPE_UNSIGNED (TREE_TYPE (expr)))
++ && !(flag_wrapv || TYPE_UNSIGNED (TREE_TYPE (expr))))
+ {
+ /* ABS_EXPR may flip the range around, if the original range
+ included negative values. */
+@@ -1436,7 +1451,7 @@ extract_range_from_unary_expr (value_ran
+ set_value_range_to_varying (vr);
+ }
+ else
+- set_value_range (vr, vr0.type, min, max, NULL);
++ set_value_range (vr, vr_type, min, max, NULL);
+ }
+
+
================================================================
Index: SOURCES/gcc-pr22358.patch
diff -u /dev/null SOURCES/gcc-pr22358.patch:1.1
--- /dev/null Sun Jul 17 20:07:18 2005
+++ SOURCES/gcc-pr22358.patch Sun Jul 17 20:07:13 2005
@@ -0,0 +1,11 @@
+--- gcc/gcc/cp/class.c 8 Jul 2005 23:36:55 -0000 1.726
++++ gcc/gcc/cp/class.c 12 Jul 2005 17:15:34 -0000
+@@ -365,7 +365,7 @@ build_base_path (enum tree_code code,
+ build2 (EQ_EXPR, boolean_type_node,
+ current_in_charge_parm, integer_zero_node),
+ v_offset,
+- BINFO_OFFSET (binfo));
++ convert (ptrdiff_type_node, BINFO_OFFSET (binfo)));
+ else
+ offset = v_offset;
+ }
================================================================
Index: SOURCES/gcc-pr22484.patch
diff -u /dev/null SOURCES/gcc-pr22484.patch:1.1
--- /dev/null Sun Jul 17 20:07:18 2005
+++ SOURCES/gcc-pr22484.patch Sun Jul 17 20:07:13 2005
@@ -0,0 +1,21 @@
+--- gcc/gcc/tree-ssa-ccp.c 27 Jun 2005 12:17:24 -0000 2.82
++++ gcc/gcc/tree-ssa-ccp.c 16 Jul 2005 21:28:15 -0000
+@@ -2337,6 +2337,7 @@ fold_stmt_inplace (tree stmt)
+ return changed;
+
+ new_rhs = fold (rhs);
++ STRIP_USELESS_TYPE_CONVERSION (new_rhs);
+ if (new_rhs == rhs)
+ return changed;
+
+--- gcc/gcc/tree-ssa-propagate.c 8 Jul 2005 19:26:01 -0000 2.26
++++ gcc/gcc/tree-ssa-propagate.c 16 Jul 2005 21:28:15 -0000
+@@ -604,6 +604,8 @@ set_rhs (tree *stmt_p, tree expr)
+ break;
+
+ case COND_EXPR:
++ if (!is_gimple_condexpr (expr))
++ return false;
+ COND_EXPR_COND (stmt) = expr;
+ break;
+ case SWITCH_EXPR:
================================================================
More information about the pld-cvs-commit
mailing list