@@ -136,15 +136,15 @@ bool bv_pointerst::convert_address_of_rec(
136
136
{
137
137
// this should be gone
138
138
bv=convert_pointer_type (array);
139
- POSTCONDITION (bv.size ()==bits);
139
+ CHECK_RETURN (bv.size ()==bits);
140
140
}
141
141
else if (array_type.id ()==ID_array ||
142
142
array_type.id ()==ID_incomplete_array ||
143
143
array_type.id ()==ID_string_constant)
144
144
{
145
145
if (convert_address_of_rec (array, bv))
146
146
return true ;
147
- POSTCONDITION (bv.size ()==bits);
147
+ CHECK_RETURN (bv.size ()==bits);
148
148
}
149
149
else
150
150
UNREACHABLE;
@@ -155,7 +155,22 @@ bool bv_pointerst::convert_address_of_rec(
155
155
DATA_INVARIANT (size>0 , " array subtype expected to have non-zero size" );
156
156
157
157
offset_arithmetic (bv, size, index );
158
- POSTCONDITION (bv.size ()==bits);
158
+ CHECK_RETURN (bv.size ()==bits);
159
+ return false ;
160
+ }
161
+ else if (expr.id ()==ID_byte_extract_little_endian ||
162
+ expr.id ()==ID_byte_extract_big_endian)
163
+ {
164
+ const auto &byte_extract_expr=to_byte_extract_expr (expr);
165
+
166
+ // recursive call
167
+ if (convert_address_of_rec (byte_extract_expr.op (), bv))
168
+ return true ;
169
+
170
+ CHECK_RETURN (bv.size ()==bits);
171
+
172
+ offset_arithmetic (bv, 1 , byte_extract_expr.offset ());
173
+ CHECK_RETURN (bv.size ()==bits);
159
174
return false ;
160
175
}
161
176
else if (expr.id ()==ID_member)
@@ -296,7 +311,7 @@ bvt bv_pointerst::convert_pointer_type(const exprt &expr)
296
311
return bv;
297
312
}
298
313
299
- POSTCONDITION (bv.size ()==bits);
314
+ CHECK_RETURN (bv.size ()==bits);
300
315
return bv;
301
316
}
302
317
else if (expr.id ()==ID_constant)
@@ -334,13 +349,13 @@ bvt bv_pointerst::convert_pointer_type(const exprt &expr)
334
349
{
335
350
count++;
336
351
bv=convert_bv (*it);
337
- POSTCONDITION (bv.size ()==bits);
352
+ CHECK_RETURN (bv.size ()==bits);
338
353
339
354
typet pointer_sub_type=it->type ().subtype ();
340
355
if (pointer_sub_type.id ()==ID_empty)
341
356
pointer_sub_type=char_type ();
342
357
size=pointer_offset_size (pointer_sub_type, ns);
343
- POSTCONDITION (size>0 );
358
+ CHECK_RETURN (size>0 );
344
359
}
345
360
}
346
361
0 commit comments