@@ -1003,8 +1003,7 @@ void goto_checkt::pointer_validity_check(
1003
1003
guard);
1004
1004
}
1005
1005
1006
- if (flags.is_unknown () ||
1007
- flags.is_integer_address ())
1006
+ if (flags.is_unknown ())
1008
1007
add_guarded_claim (
1009
1008
or_exprt (allocs, not_exprt (invalid_pointer (pointer))),
1010
1009
" dereference failure: pointer invalid" ,
@@ -1023,8 +1022,7 @@ void goto_checkt::pointer_validity_check(
1023
1022
guard);
1024
1023
1025
1024
if (flags.is_unknown () ||
1026
- flags.is_dynamic_heap () ||
1027
- flags.is_integer_address ())
1025
+ flags.is_dynamic_heap ())
1028
1026
add_guarded_claim (
1029
1027
or_exprt (allocs, not_exprt (deallocated (pointer, ns))),
1030
1028
" dereference failure: deallocated dynamic object" ,
@@ -1034,8 +1032,7 @@ void goto_checkt::pointer_validity_check(
1034
1032
guard);
1035
1033
1036
1034
if (flags.is_unknown () ||
1037
- flags.is_dynamic_local () ||
1038
- flags.is_integer_address ())
1035
+ flags.is_dynamic_local ())
1039
1036
add_guarded_claim (
1040
1037
or_exprt (allocs, not_exprt (dead_object (pointer, ns))),
1041
1038
" dereference failure: dead object" ,
@@ -1045,8 +1042,7 @@ void goto_checkt::pointer_validity_check(
1045
1042
guard);
1046
1043
1047
1044
if (flags.is_unknown () ||
1048
- flags.is_dynamic_heap () ||
1049
- flags.is_integer_address ())
1045
+ flags.is_dynamic_heap ())
1050
1046
{
1051
1047
const or_exprt dynamic_bounds (
1052
1048
dynamic_object_lower_bound (pointer, ns, access_lb),
@@ -1067,8 +1063,7 @@ void goto_checkt::pointer_validity_check(
1067
1063
1068
1064
if (flags.is_unknown () ||
1069
1065
flags.is_dynamic_local () ||
1070
- flags.is_static_lifetime () ||
1071
- flags.is_integer_address ())
1066
+ flags.is_static_lifetime ())
1072
1067
{
1073
1068
const or_exprt object_bounds (
1074
1069
object_lower_bound (pointer, ns, access_lb),
@@ -1082,6 +1077,18 @@ void goto_checkt::pointer_validity_check(
1082
1077
expr,
1083
1078
guard);
1084
1079
}
1080
+
1081
+ if (flags.is_unknown () ||
1082
+ flags.is_integer_address ())
1083
+ {
1084
+ add_guarded_claim (
1085
+ implies_exprt (integer_address (pointer), allocs),
1086
+ " dereference failure: invalid integer address" ,
1087
+ " pointer dereference" ,
1088
+ expr.find_source_location (),
1089
+ expr,
1090
+ guard);
1091
+ }
1085
1092
}
1086
1093
}
1087
1094
0 commit comments