@@ -165,10 +165,11 @@ constant_interval_exprt::modulo(const constant_interval_exprt &o) const
165165
166166 // If the RHS is 1, or -1 (signed only), then return zero.
167167 if (
168- o == constant_interval_exprt (from_integer (1 , o.type ())) ||
169- (o.is_signed () && o == constant_interval_exprt (from_integer (-1 , o.type ()))))
168+ o.is_single_value_interval () &&
169+ (o.get_lower () == from_integer (1 , o.type ()) ||
170+ (o.is_signed () && o.get_lower () == from_integer (-1 , o.type ()))))
170171 {
171- return constant_interval_exprt (zero ());
172+ return constant_interval_exprt::singleton (zero ());
172173 }
173174
174175 // If other might be modulo by zero, set everything to top.
@@ -179,7 +180,7 @@ constant_interval_exprt::modulo(const constant_interval_exprt &o) const
179180
180181 if (is_zero ())
181182 {
182- return constant_interval_exprt (zero ());
183+ return constant_interval_exprt::singleton (zero ());
183184 }
184185
185186 exprt lower = min ();
@@ -233,12 +234,12 @@ tvt constant_interval_exprt::is_definitely_false() const
233234 }
234235 }
235236
236- if (equal ( constant_interval_exprt ( zero ())). is_true ())
237+ if (is_single_value_interval () && get_lower () == zero ())
237238 {
238239 return tvt (true );
239240 }
240241
241- if (contains (constant_interval_exprt (zero ())))
242+ if (contains (constant_interval_exprt::singleton (zero ())))
242243 {
243244 INVARIANT (
244245 is_positive (get_upper ()) || is_negative (get_lower ()),
@@ -457,12 +458,14 @@ tvt constant_interval_exprt::not_equal(const constant_interval_exprt &o) const
457458
458459constant_interval_exprt constant_interval_exprt::increment () const
459460{
460- return plus (constant_interval_exprt (from_integer (mp_integer (1 ), type ())));
461+ return plus (
462+ constant_interval_exprt::singleton (from_integer (mp_integer (1 ), type ())));
461463}
462464
463465constant_interval_exprt constant_interval_exprt::decrement () const
464466{
465- return minus (constant_interval_exprt (from_integer (mp_integer (1 ), type ())));
467+ return minus (
468+ constant_interval_exprt::singleton (from_integer (mp_integer (1 ), type ())));
466469}
467470
468471constant_interval_exprt constant_interval_exprt::get_extremes (
@@ -939,7 +942,7 @@ constant_interval_exprt::handle_constant_unary_expression(
939942 if (is_single_value_interval ())
940943 {
941944 auto expr = unary_exprt (op, get_lower ());
942- return constant_interval_exprt (simplified_expr (expr));
945+ return constant_interval_exprt::singleton (simplified_expr (expr));
943946 }
944947 return top ();
945948}
@@ -951,7 +954,7 @@ constant_interval_exprt::handle_constant_binary_expression(
951954{
952955 PRECONDITION (is_single_value_interval () && other.is_single_value_interval ());
953956 auto expr = binary_exprt (get_lower (), op, other.get_lower ());
954- return constant_interval_exprt (simplified_expr (expr));
957+ return constant_interval_exprt::singleton (simplified_expr (expr));
955958}
956959
957960exprt constant_interval_exprt::get_max (const exprt &a, const exprt &b)
@@ -1964,11 +1967,11 @@ constant_interval_exprt constant_interval_exprt::tvt_to_interval(const tvt &val)
19641967{
19651968 if (val.is_true ())
19661969 {
1967- return constant_interval_exprt (true_exprt ());
1970+ return constant_interval_exprt::singleton (true_exprt ());
19681971 }
19691972 else if (val.is_false ())
19701973 {
1971- return constant_interval_exprt (false_exprt ());
1974+ return constant_interval_exprt::singleton (false_exprt ());
19721975 }
19731976 else
19741977 {
0 commit comments