Skip to content

Commit cd3c603

Browse files
authored
Merge pull request #5336 from danpoe/fixes/pointer-primitive-check
Do not add pointer primitive check for cprover internals
2 parents 768eafc + b5745a1 commit cd3c603

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

src/analyses/goto_check.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ Author: Daniel Kroening, kroening@kroening.com
2626
#include <util/options.h>
2727
#include <util/pointer_offset_size.h>
2828
#include <util/pointer_predicates.h>
29+
#include <util/prefix.h>
2930
#include <util/simplify_expr.h>
3031
#include <util/std_expr.h>
3132
#include <util/std_types.h>
@@ -1187,12 +1188,23 @@ void goto_checkt::pointer_primitive_check(
11871188
if(!enable_pointer_primitive_check)
11881189
return;
11891190

1191+
if(expr.source_location().is_built_in())
1192+
return;
1193+
11901194
const exprt pointer = (expr.id() == ID_r_ok || expr.id() == ID_w_ok)
11911195
? to_binary_expr(expr).lhs()
11921196
: to_unary_expr(expr).op();
11931197

11941198
CHECK_RETURN(pointer.type().id() == ID_pointer);
11951199

1200+
if(pointer.id() == ID_symbol)
1201+
{
1202+
const auto &symbol_expr = to_symbol_expr(pointer);
1203+
1204+
if(has_prefix(id2string(symbol_expr.get_identifier()), CPROVER_PREFIX))
1205+
return;
1206+
}
1207+
11961208
const auto size_of_expr_opt = size_of_expr(pointer.type().subtype(), ns);
11971209

11981210
const exprt size = !size_of_expr_opt.has_value()

0 commit comments

Comments
 (0)