All the work for keeping the maybe nonzero masks up to date is being done by the bit-CCP code now. Any bitmask inherent in the range that range-ops may have calculated has no extra information, so the intersection is unnecessary.
gcc/ChangeLog: * range-op.cc (update_known_bitmask): Avoid unnecessary intersection. --- gcc/range-op.cc | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/gcc/range-op.cc b/gcc/range-op.cc index 9eec46441a3..0b01cf48fdf 100644 --- a/gcc/range-op.cc +++ b/gcc/range-op.cc @@ -89,10 +89,7 @@ update_known_bitmask (irange &r, tree_code code, bit_value_binop (code, sign, prec, &value, &mask, lh_sign, lh_prec, lh_value, lh_mask, rh_sign, rh_prec, rh_value, rh_mask); - - int_range<2> tmp (type); - tmp.set_nonzero_bits (value | mask); - r.intersect (tmp); + r.set_nonzero_bits (value | mask); } // Return the upper limit for a type. -- 2.38.1