diff options
Diffstat (limited to 'gcc/value-range.cc')
-rw-r--r-- | gcc/value-range.cc | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/value-range.cc b/gcc/value-range.cc index def9299d..a341cec 100644 --- a/gcc/value-range.cc +++ b/gcc/value-range.cc @@ -1859,12 +1859,13 @@ irange::union_nonzero_bits (const irange &r) bool changed = false; if (m_nonzero_mask != r.m_nonzero_mask) { - m_nonzero_mask = get_nonzero_bits () | r.get_nonzero_bits (); + wide_int save = get_nonzero_bits (); + m_nonzero_mask = save | r.get_nonzero_bits (); // No need to call set_range_from_nonzero_bits, because we'll // never narrow the range. Besides, it would cause endless // recursion because of the union_ in // set_range_from_nonzero_bits. - changed = true; + changed = m_nonzero_mask != save; } normalize_kind (); if (flag_checking) |