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
791792void bv_pointerst::post_process ()
0 commit comments