aboutsummaryrefslogtreecommitdiff
path: root/gcc/value-range.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/value-range.cc')
-rw-r--r--gcc/value-range.cc5
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)