]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00140.html
authorDiego Novillo <dnovillo@google.com>
Tue, 5 Feb 2008 16:31:20 +0000 (11:31 -0500)
committerDiego Novillo <dnovillo@gcc.gnu.org>
Tue, 5 Feb 2008 16:31:20 +0000 (11:31 -0500)
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
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/warn/pr33738.C [deleted file]
gcc/tree-vrp.c

index 84c085694c1aef8626ba0eb0c95e87ea976ce996..95da033adc3dc18c76c8ab66efb1ec1260d3789f 100644 (file)
@@ -1,3 +1,11 @@
+2008-02-05  Diego Novillo  <dnovillo@google.com>
+
+       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  <ghazi@caip.rutgers.edu>
 
        PR other/35070
index daf3f078010a5e0c81f74107ec9dfe37d9eb6bee..843406430dc19410cbd3e86fb8714827a1dda5f0 100644 (file)
@@ -1,3 +1,10 @@
+2008-02-05  Diego Novillo  <dnovillo@google.com>
+
+       http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00140.html
+
+       PR 33738
+       * g++.dg/warn/pr33738.C: Remove.
+
 2008-02-05  Paul Thomas  <pault@gcc.gnu.org>
 
        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 (file)
index 8847b6e..0000000
+++ /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<Alpha>(GetM1());
- if (a2 == -1) {       // { dg-warning "always false due" }
-    link_error ();
- }
- if (-1 == a2) {       // { dg-warning "always false due" }
-    link_error ();
- }
- return 0;
-}
-
index 9b9cc030d7fbe78e5dea5760cb774a7a2929ada6..5f9a3279aa3cb5df783a59c31ca747277736e273 100644 (file)
@@ -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;
 }