OSDN Git Service

http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00140.html
authordnovillo <dnovillo@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 5 Feb 2008 16:31:20 +0000 (16:31 +0000)
committerdnovillo <dnovillo@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 5 Feb 2008 16:31:20 +0000 (16:31 +0000)
PR 33738
* tree-vrp.c (vrp_evaluate_conditional): Revert fix for
PR 33738.

testsuite/ChangeLog

PR 33738
* g++.dg/warn/pr33738.C: Remove.

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

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/warn/pr33738.C [deleted file]
gcc/tree-vrp.c

index 84c0856..95da033 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 daf3f07..8434064 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 9b9cc03..5f9a327 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;
 }