Skip to content

Commit aba13ad

Browse files
authored
Merge pull request #3776 from tautschnig/deprecation-equal_exprt
Construct equal_exprt in a non-deprecated way
2 parents ffa25f7 + 5f0367c commit aba13ad

File tree

7 files changed

+23
-59
lines changed

7 files changed

+23
-59
lines changed

src/analyses/invariant_set.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -752,9 +752,8 @@ void invariant_sett::nnf(exprt &expr, bool negate)
752752
typecast_expr.op().type().id() == ID_unsignedbv ||
753753
typecast_expr.op().type().id() == ID_signedbv)
754754
{
755-
equal_exprt tmp;
756-
tmp.lhs() = typecast_expr.op();
757-
tmp.rhs() = from_integer(0, typecast_expr.op().type());
755+
equal_exprt tmp(
756+
typecast_expr.op(), from_integer(0, typecast_expr.op().type()));
758757
nnf(tmp, !negate);
759758
expr.swap(tmp);
760759
}
@@ -1053,9 +1052,7 @@ void invariant_sett::assignment(
10531052
const exprt &lhs,
10541053
const exprt &rhs)
10551054
{
1056-
equal_exprt equality;
1057-
equality.lhs()=lhs;
1058-
equality.rhs()=rhs;
1055+
equal_exprt equality(lhs, rhs);
10591056

10601057
// first evaluate RHS
10611058
simplify(equality.rhs());

src/ansi-c/c_typecheck_expr.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2540,8 +2540,8 @@ exprt c_typecheck_baset::do_special_functions(
25402540
throw 0;
25412541
}
25422542

2543-
equal_exprt equality_expr;
2544-
equality_expr.operands()=expr.arguments();
2543+
equal_exprt equality_expr(
2544+
expr.arguments().front(), expr.arguments().back());
25452545
equality_expr.add_source_location()=source_location;
25462546

25472547
if(!base_type_eq(equality_expr.lhs().type(),

src/goto-programs/goto_convert.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1156,9 +1156,7 @@ exprt goto_convertt::case_guard(
11561156

11571157
forall_expr(it, case_op)
11581158
{
1159-
equal_exprt eq_expr;
1160-
eq_expr.lhs() = value;
1161-
eq_expr.rhs() = *it;
1159+
equal_exprt eq_expr(value, *it);
11621160
dest.move_to_operands(eq_expr);
11631161
}
11641162
INVARIANT(

src/solvers/flattening/boolbv_byte_extract.cpp

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -143,9 +143,6 @@ bvt boolbvt::convert_byte_extract(const byte_extract_exprt &expr)
143143

144144
// add implications
145145

146-
equal_exprt equality;
147-
equality.lhs() = expr.offset(); // index operand
148-
149146
// type of index operand
150147
const typet &constant_type = expr.offset().type();
151148

@@ -154,8 +151,6 @@ bvt boolbvt::convert_byte_extract(const byte_extract_exprt &expr)
154151

155152
for(std::size_t i=0; i<bytes; i++)
156153
{
157-
equality.rhs()=from_integer(i, constant_type);
158-
159154
std::size_t offset=i*byte_width;
160155

161156
for(std::size_t j=0; j<width; j++)
@@ -164,23 +159,20 @@ bvt boolbvt::convert_byte_extract(const byte_extract_exprt &expr)
164159
else
165160
equal_bv[j]=const_literal(true);
166161

167-
prop.l_set_to_true(
168-
prop.limplies(convert(equality), prop.land(equal_bv)));
162+
prop.l_set_to_true(prop.limplies(
163+
convert(equal_exprt(expr.offset(), from_integer(i, constant_type))),
164+
prop.land(equal_bv)));
169165
}
170166
}
171167
else
172168
{
173-
equal_exprt equality;
174-
equality.lhs() = expr.offset(); // index operand
175-
176169
// type of index operand
177170
const typet &constant_type = expr.offset().type();
178171

179172
for(std::size_t i=0; i<bytes; i++)
180173
{
181-
equality.rhs()=from_integer(i, constant_type);
182-
183-
literalt e=convert(equality);
174+
literalt e =
175+
convert(equal_exprt(expr.offset(), from_integer(i, constant_type)));
184176

185177
std::size_t offset=i*byte_width;
186178

src/solvers/flattening/boolbv_byte_update.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,8 @@ bvt boolbvt::convert_byte_update(const byte_update_exprt &expr)
8585
for(std::size_t offset=0; offset<bv.size(); offset+=byte_width)
8686
{
8787
// index condition
88-
equal_exprt equality;
89-
equality.lhs()=offset_expr;
90-
equality.rhs()=from_integer(offset/byte_width, offset_expr.type());
88+
equal_exprt equality(
89+
offset_expr, from_integer(offset / byte_width, offset_expr.type()));
9190
literalt equal=convert(equality);
9291

9392
bv_endianness_mapt map_op(op.type(), little_endian, ns, boolbv_width);

src/solvers/flattening/boolbv_extractbit.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,8 @@ literalt boolbvt::convert_extractbit(const extractbit_exprt &expr)
5151
std::max(address_bits(src_bv_width), index_bv_width);
5252
unsignedbv_typet index_type(index_width);
5353

54-
equal_exprt equality;
55-
equality.lhs() = expr.index();
56-
57-
if(index_type!=equality.lhs().type())
58-
equality.lhs().make_typecast(index_type);
54+
equal_exprt equality(
55+
typecast_exprt::conditional_cast(expr.index(), index_type), exprt());
5956

6057
if(prop.has_set_to())
6158
{

src/solvers/flattening/boolbv_index.cpp

Lines changed: 8 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -144,12 +144,6 @@ bvt boolbvt::convert_index(const index_exprt &expr)
144144

145145
// add implications
146146

147-
equal_exprt index_equality;
148-
index_equality.lhs()=index; // index operand
149-
150-
equal_exprt value_equality;
151-
value_equality.lhs()=result;
152-
153147
#ifdef COMPACT_EQUAL_CONST
154148
bv_utils.equal_const_register(convert_bv(index)); // Definitely
155149
bv_utils.equal_const_register(convert_bv(result)); // Maybe
@@ -159,19 +153,15 @@ bvt boolbvt::convert_index(const index_exprt &expr)
159153

160154
for(mp_integer i=0; i<array_size; i=i+1)
161155
{
162-
index_equality.rhs()=from_integer(i, index_equality.lhs().type());
163-
CHECK_RETURN(index_equality.rhs().is_not_nil());
164-
165156
INVARIANT(
166157
it != array.operands().end(),
167158
"this loop iterates over the array, so `it` shouldn't be increased "
168159
"past the array's end");
169160

170-
value_equality.rhs()=*it++;
171-
172161
// Cache comparisons and equalities
173-
prop.l_set_to_true(convert(implies_exprt(index_equality,
174-
value_equality)));
162+
prop.l_set_to_true(convert(implies_exprt(
163+
equal_exprt(index, from_integer(i, index.type())),
164+
equal_exprt(result, *it++))));
175165
}
176166

177167
return bv;
@@ -203,9 +193,6 @@ bvt boolbvt::convert_index(const index_exprt &expr)
203193

204194
// add implications
205195

206-
equal_exprt index_equality;
207-
index_equality.lhs()=index; // index operand
208-
209196
#ifdef COMPACT_EQUAL_CONST
210197
bv_utils.equal_const_register(convert_bv(index)); // Definitely
211198
#endif
@@ -215,26 +202,21 @@ bvt boolbvt::convert_index(const index_exprt &expr)
215202

216203
for(mp_integer i=0; i<array_size; i=i+1)
217204
{
218-
index_equality.rhs()=from_integer(i, index_equality.lhs().type());
219-
CHECK_RETURN(index_equality.rhs().is_not_nil());
220-
221205
mp_integer offset=i*width;
222206

223207
for(std::size_t j=0; j<width; j++)
224208
equal_bv[j] = prop.lequal(
225209
bv[j], array_bv[numeric_cast_v<std::size_t>(offset + j)]);
226210

227-
prop.l_set_to_true(
228-
prop.limplies(convert(index_equality), prop.land(equal_bv)));
211+
prop.l_set_to_true(prop.limplies(
212+
convert(equal_exprt(index, from_integer(i, index.type()))),
213+
prop.land(equal_bv)));
229214
}
230215
}
231216
else
232217
{
233218
bv.resize(width);
234219

235-
equal_exprt equality;
236-
equality.lhs()=index; // index operand
237-
238220
#ifdef COMPACT_EQUAL_CONST
239221
bv_utils.equal_const_register(convert_bv(index)); // Definitely
240222
#endif
@@ -247,9 +229,8 @@ bvt boolbvt::convert_index(const index_exprt &expr)
247229

248230
for(mp_integer i=0; i<array_size; i=i+1)
249231
{
250-
equality.op1()=from_integer(i, constant_type);
251-
252-
literalt e=convert(equality);
232+
literalt e =
233+
convert(equal_exprt(index, from_integer(i, constant_type)));
253234

254235
mp_integer offset=i*width;
255236

0 commit comments

Comments
 (0)