tree-ssa-ccp.c (extend_mask): New param sgn.
authorPrathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
Sat, 6 Aug 2016 18:11:24 +0000 (18:11 +0000)
committerPrathamesh Kulkarni <prathamesh3492@gcc.gnu.org>
Sat, 6 Aug 2016 18:11:24 +0000 (18:11 +0000)
2016-08-08  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

* tree-ssa-ccp.c (extend_mask): New param sgn.
Remove ORing with wi::mask.
(get_default_value): Adjust call to extend_mask to pass sign.
(evaluate_stmt): Likewise.

From-SVN: r239212

gcc/ChangeLog
gcc/tree-ssa-ccp.c

index 8410391495b031fab88b59eb0e9fce0340b3b5e0..6a669e6576139a554651af03c1a7c8261ad48d42 100644 (file)
@@ -1,3 +1,10 @@
+2016-08-08  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+
+       * tree-ssa-ccp.c (extend_mask): New param sgn.
+       Remove ORing with wi::mask.
+       (get_default_value): Adjust call to extend_mask to pass sign.
+       (evaluate_stmt): Likewise.
+
 2016-08-06  Jakub Jelinek  <jakub@redhat.com>
 
        * gcov.c (handle_cycle): Use INTTYPE_MAXIMUM (int64_t) instead of
index ae120a8ff955d704e973bfec804be1d1caf1eee7..5d5386e4f8f70d6d4fd2e5b8a74a511022ff1f12 100644 (file)
@@ -231,13 +231,12 @@ debug_lattice_value (ccp_prop_value_t val)
   fprintf (stderr, "\n");
 }
 
-/* Extend NONZERO_BITS to a full mask, with the upper bits being set.  */
+/* Extend NONZERO_BITS to a full mask, based on sgn.  */ 
 
 static widest_int
-extend_mask (const wide_int &nonzero_bits)
+extend_mask (const wide_int &nonzero_bits, signop sgn)
 {
-  return (wi::mask <widest_int> (wi::get_precision (nonzero_bits), true)
-         | widest_int::from (nonzero_bits, UNSIGNED));
+  return widest_int::from (nonzero_bits, sgn); 
 }
 
 /* Compute a default value for variable VAR and store it in the
@@ -287,7 +286,7 @@ get_default_value (tree var)
                {
                  val.lattice_val = CONSTANT;
                  val.value = build_zero_cst (TREE_TYPE (var));
-                 val.mask = extend_mask (nonzero_bits);
+                 val.mask = extend_mask (nonzero_bits, TYPE_SIGN (TREE_TYPE (var)));
                }
            }
        }
@@ -1937,7 +1936,7 @@ evaluate_stmt (gimple *stmt)
            {
              val.lattice_val = CONSTANT;
              val.value = build_zero_cst (TREE_TYPE (lhs));
-             val.mask = extend_mask (nonzero_bits);
+             val.mask = extend_mask (nonzero_bits, TYPE_SIGN (TREE_TYPE (lhs)));
              is_constant = true;
            }
          else
@@ -1948,7 +1947,8 @@ evaluate_stmt (gimple *stmt)
              if (nonzero_bits == 0)
                val.mask = 0;
              else
-               val.mask = val.mask & extend_mask (nonzero_bits);
+               val.mask = val.mask & extend_mask (nonzero_bits,
+                                                  TYPE_SIGN (TREE_TYPE (lhs)));
            }
        }
     }