* tree-vrp.c (simplify_abs_using_ranges): Simplify.
authorNathan Sidwell <nathan@acm.org>
Tue, 11 Aug 2015 12:34:43 +0000 (12:34 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Tue, 11 Aug 2015 12:34:43 +0000 (12:34 +0000)
From-SVN: r226779

gcc/ChangeLog
gcc/tree-vrp.c

index 3a078162b356c2b3f6e8eea6cc83a1bcee9973aa..cb2d6a06b9a335b53d9c98a4b2574cb1cca28b44 100644 (file)
@@ -1,5 +1,7 @@
 2015-08-11  Nathan Sidwell  <nathan@acm.org>
 
+       * tree-vrp.c (simplify_abs_using_ranges): Simplify.
+
        * tree-ssa-phiopt.c (minmax_replacement): Create new ssa name if
        we're not the only contributor to target phi.
 
index 31a9d21b4bad22d8377eae518c282ed8a521f37f..d51acaa52fc5fcccbc935b9d03e15bf273896c54 100644 (file)
@@ -9152,37 +9152,25 @@ simplify_div_or_mod_using_ranges (gimple stmt)
 static bool
 simplify_abs_using_ranges (gimple stmt)
 {
-  tree val = NULL;
   tree op = gimple_assign_rhs1 (stmt);
-  tree type = TREE_TYPE (op);
   value_range_t *vr = get_value_range (op);
 
-  if (TYPE_UNSIGNED (type))
-    {
-      val = integer_zero_node;
-    }
-  else if (vr)
+  if (vr)
     {
+      tree val = NULL;
       bool sop = false;
 
       val = compare_range_with_value (LE_EXPR, vr, integer_zero_node, &sop);
       if (!val)
        {
+         /* The range is neither <= 0 nor > 0.  Now see if it is
+            either < 0 or >= 0.  */
          sop = false;
-         val = compare_range_with_value (GE_EXPR, vr, integer_zero_node,
+         val = compare_range_with_value (LT_EXPR, vr, integer_zero_node,
                                          &sop);
-
-         if (val)
-           {
-             if (integer_zerop (val))
-               val = integer_one_node;
-             else if (integer_onep (val))
-               val = integer_zero_node;
-           }
        }
 
-      if (val
-         && (integer_onep (val) || integer_zerop (val)))
+      if (val)
        {
          if (sop && issue_strict_overflow_warning (WARN_STRICT_OVERFLOW_MISC))
            {
@@ -9198,10 +9186,10 @@ simplify_abs_using_ranges (gimple stmt)
            }
 
          gimple_assign_set_rhs1 (stmt, op);
-         if (integer_onep (val))
-           gimple_assign_set_rhs_code (stmt, NEGATE_EXPR);
-         else
+         if (integer_zerop (val))
            gimple_assign_set_rhs_code (stmt, SSA_NAME);
+         else
+           gimple_assign_set_rhs_code (stmt, NEGATE_EXPR);
          update_stmt (stmt);
          return true;
        }