From c1e7d240125d4927db2f87df874e2133d0e63ba9 Mon Sep 17 00:00:00 2001 From: Diego Novillo Date: Tue, 5 Feb 2008 11:31:20 -0500 Subject: http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00140.html PR 33738 * tree-vrp.c (vrp_evaluate_conditional): Revert fix for PR 33738. testsuite/ChangeLog PR 33738 * g++.dg/warn/pr33738.C: Remove. From-SVN: r132124 --- gcc/ChangeLog | 8 +++++++ gcc/testsuite/ChangeLog | 7 +++++++ gcc/testsuite/g++.dg/warn/pr33738.C | 26 ----------------------- gcc/tree-vrp.c | 42 ------------------------------------- 4 files changed, 15 insertions(+), 68 deletions(-) delete mode 100644 gcc/testsuite/g++.dg/warn/pr33738.C (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 84c0856..95da033 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2008-02-05 Diego Novillo + + http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00140.html + + PR 33738 + * tree-vrp.c (vrp_evaluate_conditional): Revert fix for + PR 33738. + 2008-02-05 Kaveh R. Ghazi PR other/35070 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index daf3f07..8434064 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2008-02-05 Diego Novillo + + http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00140.html + + PR 33738 + * g++.dg/warn/pr33738.C: Remove. + 2008-02-05 Paul Thomas PR fortran/34945 diff --git a/gcc/testsuite/g++.dg/warn/pr33738.C b/gcc/testsuite/g++.dg/warn/pr33738.C deleted file mode 100644 index 8847b6e3..0000000 --- a/gcc/testsuite/g++.dg/warn/pr33738.C +++ /dev/null @@ -1,26 +0,0 @@ -// { dg-do run } -// { dg-options "-O2 -Wtype-limits" } -extern void link_error (void); - -enum Alpha { - ZERO = 0, ONE, TWO, THREE -}; - -Alpha a2; - -int m1 = -1; -int GetM1() { - return m1; -} - -int main() { - a2 = static_cast(GetM1()); - if (a2 == -1) { // { dg-warning "always false due" } - link_error (); - } - if (-1 == a2) { // { dg-warning "always false due" } - link_error (); - } - return 0; -} - diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index 9b9cc03..5f9a327 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -5073,48 +5073,6 @@ vrp_evaluate_conditional (tree cond, tree stmt) } } - if (warn_type_limits - && ret - && TREE_CODE_CLASS (TREE_CODE (cond)) == tcc_comparison) - { - /* If the comparison is being folded and the operand on the LHS - is being compared against a constant value that is outside of - the natural range of OP0's type, then the predicate will - always fold regardless of the value of OP0. If -Wtype-limits - was specified, emit a warning. */ - const char *warnmsg = NULL; - tree op0 = TREE_OPERAND (cond, 0); - tree op1 = TREE_OPERAND (cond, 1); - tree type = TREE_TYPE (op0); - value_range_t *vr0 = get_value_range (op0); - - if (vr0->type != VR_VARYING - && INTEGRAL_TYPE_P (type) - && vrp_val_is_min (vr0->min) - && vrp_val_is_max (vr0->max) - && is_gimple_min_invariant (op1)) - { - if (integer_zerop (ret)) - warnmsg = G_("comparison always false due to limited range of " - "data type"); - else - warnmsg = G_("comparison always true due to limited range of " - "data type"); - } - - if (warnmsg) - { - location_t locus; - - if (!EXPR_HAS_LOCATION (stmt)) - locus = input_location; - else - locus = EXPR_LOCATION (stmt); - - warning (OPT_Wextra, "%H%s", &locus, warnmsg); - } - } - return ret; } -- cgit v1.1