Skip to content

Commit 3c47ccb

Browse files
committed
Use invariant annotations instead of asserts
1 parent ebd5343 commit 3c47ccb

File tree

1 file changed

+18
-17
lines changed

1 file changed

+18
-17
lines changed

src/solvers/flattening/bv_pointers.cpp

+18-17
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ Author: Daniel Kroening, [email protected]
1111
#include <util/c_types.h>
1212
#include <util/config.h>
1313
#include <util/arith_tools.h>
14+
#include <util/invariant.h>
1415
#include <util/prefix.h>
1516
#include <util/std_expr.h>
1617
#include <util/pointer_offset_size.h>
@@ -135,26 +136,26 @@ bool bv_pointerst::convert_address_of_rec(
135136
{
136137
// this should be gone
137138
bv=convert_pointer_type(array);
138-
assert(bv.size()==bits);
139+
POSTCONDITION(bv.size()==bits);
139140
}
140141
else if(array_type.id()==ID_array ||
141142
array_type.id()==ID_incomplete_array ||
142143
array_type.id()==ID_string_constant)
143144
{
144145
if(convert_address_of_rec(array, bv))
145146
return true;
146-
assert(bv.size()==bits);
147+
POSTCONDITION(bv.size()==bits);
147148
}
148149
else
149-
assert(false);
150+
UNREACHABLE;
150151

151152
// get size
152153
mp_integer size=
153154
pointer_offset_size(array_type.subtype(), ns);
154-
assert(size>0);
155+
DATA_INVARIANT(size>0, "array subtype expected to have non-zero size");
155156

156157
offset_arithmetic(bv, size, index);
157-
assert(bv.size()==bits);
158+
POSTCONDITION(bv.size()==bits);
158159
return false;
159160
}
160161
else if(expr.id()==ID_member)
@@ -172,7 +173,7 @@ bool bv_pointerst::convert_address_of_rec(
172173
mp_integer offset=member_offset(
173174
to_struct_type(struct_op_type),
174175
member_expr.get_component_name(), ns);
175-
assert(offset>=0);
176+
DATA_INVARIANT(offset>=0, "member offset expected to be positive");
176177

177178
// add offset
178179
offset_arithmetic(bv, offset);
@@ -295,7 +296,7 @@ bvt bv_pointerst::convert_pointer_type(const exprt &expr)
295296
return bv;
296297
}
297298

298-
assert(bv.size()==bits);
299+
POSTCONDITION(bv.size()==bits);
299300
return bv;
300301
}
301302
else if(expr.id()==ID_constant)
@@ -333,13 +334,13 @@ bvt bv_pointerst::convert_pointer_type(const exprt &expr)
333334
{
334335
count++;
335336
bv=convert_bv(*it);
336-
assert(bv.size()==bits);
337+
POSTCONDITION(bv.size()==bits);
337338

338339
typet pointer_sub_type=it->type().subtype();
339340
if(pointer_sub_type.id()==ID_empty)
340341
pointer_sub_type=char_type();
341342
size=pointer_offset_size(pointer_sub_type, ns);
342-
assert(size>0);
343+
POSTCONDITION(size>0);
343344
}
344345
}
345346

@@ -413,7 +414,7 @@ bvt bv_pointerst::convert_pointer_type(const exprt &expr)
413414

414415
mp_integer element_size=
415416
pointer_offset_size(expr.op0().type().subtype(), ns);
416-
assert(element_size>0);
417+
DATA_INVARIANT(element_size>0, "object size expected to be non-zero");
417418

418419
offset_arithmetic(bv, element_size, neg_op1);
419420

@@ -470,7 +471,7 @@ bvt bv_pointerst::convert_bitvector(const exprt &expr)
470471

471472
mp_integer element_size=
472473
pointer_offset_size(expr.op0().type().subtype(), ns);
473-
assert(element_size>0);
474+
DATA_INVARIANT(element_size>0, "object size expected to be non-zero");
474475

475476
if(element_size!=1)
476477
{
@@ -570,7 +571,7 @@ exprt bv_pointerst::bv_get_rec(
570571

571572
for(std::size_t i=0; i<bits; i++)
572573
{
573-
char ch;
574+
char ch=0;
574575
std::size_t bit_nr=i+offset;
575576

576577
if(unknown[bit_nr])
@@ -720,8 +721,8 @@ void bv_pointerst::do_postponed(
720721
bvt saved_bv=postponed.op;
721722
saved_bv.erase(saved_bv.begin(), saved_bv.begin()+offset_bits);
722723

723-
assert(bv.size()==saved_bv.size());
724-
assert(postponed.bv.size()==1);
724+
POSTCONDITION(bv.size()==saved_bv.size());
725+
PRECONDITION(postponed.bv.size()==1);
725726

726727
literalt l1=bv_utils.equal(bv, saved_bv);
727728
literalt l2=postponed.bv.front();
@@ -773,8 +774,8 @@ void bv_pointerst::do_postponed(
773774
bvt saved_bv=postponed.op;
774775
saved_bv.erase(saved_bv.begin(), saved_bv.begin()+offset_bits);
775776

776-
assert(bv.size()==saved_bv.size());
777-
assert(postponed.bv.size()>=1);
777+
POSTCONDITION(bv.size()==saved_bv.size());
778+
PRECONDITION(postponed.bv.size()>=1);
778779

779780
literalt l1=bv_utils.equal(bv, saved_bv);
780781

@@ -785,7 +786,7 @@ void bv_pointerst::do_postponed(
785786
}
786787
}
787788
else
788-
assert(false);
789+
UNREACHABLE;
789790
}
790791

791792
void bv_pointerst::post_process()

0 commit comments

Comments
 (0)