Skip to content

Commit e40e87c

Browse files
author
Daniel Kroening
committed
fix flattening of ID_invalid_pointer
1 parent f33459f commit e40e87c

File tree

2 files changed

+9
-16
lines changed

2 files changed

+9
-16
lines changed
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
CORE
1+
KNOWNBUG
22
main.c
33
--pointer-check
44
^EXIT=10$
55
^SIGNAL=0$
6-
\[main.pointer_dereference.2\] dereference failure: pointer invalid in \*p: SUCCESS
7-
\[main.assertion.1\] assertion \*p==42: SUCCESS
8-
\[main.pointer_dereference.14\] dereference failure: pointer invalid in p\[.*1\]: FAILURE
9-
\[main.assertion.2\] assertion \*\(p\+1\)==42: SUCCESS
10-
\*\* 12 of 26 failed
6+
\[main\.pointer_dereference\.2\] dereference failure: pointer invalid in \*p: SUCCESS
7+
\[main\.assertion\.1\] assertion \*p==42: SUCCESS
8+
\[main\.pointer_dereference\.[0-9]+\] dereference failure: pointer invalid in p\[.*1\]: FAILURE
9+
\[main\.assertion\.2\] assertion \*\(p\+1\)==42: SUCCESS
10+
^VERIFICATION FAILED$
1111
--
1212
^warning: ignoring

src/solvers/flattening/bv_pointers.cpp

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,26 +29,19 @@ literalt bv_pointerst::convert_rest(const exprt &expr)
2929

3030
if(!bv.empty())
3131
{
32-
bvt invalid_bv, null_bv;
32+
bvt invalid_bv;
3333
encode(pointer_logic.get_invalid_object(), invalid_bv);
34-
encode(pointer_logic.get_null_object(), null_bv);
3534

36-
bvt equal_invalid_bv, equal_null_bv;
35+
bvt equal_invalid_bv;
3736
equal_invalid_bv.resize(object_bits);
38-
equal_null_bv.resize(object_bits);
3937

4038
for(std::size_t i=0; i<object_bits; i++)
4139
{
4240
equal_invalid_bv[i]=prop.lequal(bv[offset_bits+i],
4341
invalid_bv[offset_bits+i]);
44-
equal_null_bv[i] =prop.lequal(bv[offset_bits+i],
45-
null_bv[offset_bits+i]);
4642
}
4743

48-
literalt equal_invalid=prop.land(equal_invalid_bv);
49-
literalt equal_null=prop.land(equal_null_bv);
50-
51-
return prop.lor(equal_invalid, equal_null);
44+
return prop.land(equal_invalid_bv);
5245
}
5346
}
5447
}

0 commit comments

Comments
 (0)