Skip to content

Commit d0c6f9e

Browse files
author
Enrico Steffinlongo
committed
Fix pointer offset issue as converted as unsigned
1 parent 5bbf3b5 commit d0c6f9e

File tree

5 files changed

+5
-5
lines changed

5 files changed

+5
-5
lines changed

regression/cbmc-primitives/pointer-offset-01/test-no-cp.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
CORE
1+
CORE new-smt-backend
22
main.c
33
--no-simplify --no-propagation
44
^EXIT=10$

regression/cbmc-primitives/pointer-offset-01/test.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
CORE
1+
CORE new-smt-backend
22
main.c
33

44
^EXIT=10$

regression/cbmc-primitives/r_w_ok_bug/test.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
CORE
1+
CORE new-smt-backend
22
main.c
33
--pointer-check --no-simplify --no-propagation
44
^\[main.pointer_dereference.\d+\] line 8 dereference failure: pointer outside object bounds in \*p1: FAILURE$

src/solvers/smt2_incremental/convert_expr_to_smt.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1351,7 +1351,7 @@ static smt_termt convert_expr_to_smt(
13511351
smt_bit_vector_theoryt::extract(offset_bits - 1, 0)(converted_expr);
13521352
if(width > offset_bits)
13531353
{
1354-
return smt_bit_vector_theoryt::zero_extend(width - offset_bits)(extract_op);
1354+
return smt_bit_vector_theoryt::sign_extend(width - offset_bits)(extract_op);
13551355
}
13561356
return extract_op;
13571357
}

unit/solvers/smt2_incremental/convert_expr_to_smt.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1633,7 +1633,7 @@ TEST_CASE("pointer_offset_exprt to SMT conversion", "[core][smt2_incremental]")
16331633
{
16341634
const auto converted = test.convert(pointer_offset);
16351635
const auto expected =
1636-
smt_bit_vector_theoryt::zero_extend(8)(smt_bit_vector_theoryt::extract(
1636+
smt_bit_vector_theoryt::sign_extend(8)(smt_bit_vector_theoryt::extract(
16371637
55, 0)(smt_identifier_termt("foo", smt_bit_vector_sortt(64))));
16381638
CHECK(converted == expected);
16391639
}

0 commit comments

Comments
 (0)