Skip to content

Commit 9dad05b

Browse files
committed
fix: handling pointers in bitwuzla builder
1 parent f75cfb1 commit 9dad05b

3 files changed

Lines changed: 8 additions & 3 deletions

File tree

lib/Solver/BitwuzlaBuilder.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1113,6 +1113,11 @@ Term BitwuzlaBuilder::constructActual(ref<Expr> e, int *width_out) {
11131113
assert(*width_out != 1 && "uncanonicalized FNeg");
11141114
return ctx->mk_term(Kind::FP_NEG, {arg});
11151115
}
1116+
case Expr::Pointer:
1117+
case Expr::ConstantPointer: {
1118+
PointerExpr *pointerExpr = cast<PointerExpr>(e);
1119+
return constructActual(pointerExpr->getValue(), width_out);
1120+
};
11161121

11171122
// unused due to canonicalization
11181123
#if 0
@@ -1124,7 +1129,7 @@ case Expr::Sge:
11241129
#endif
11251130

11261131
default:
1127-
assert(0 && "unhandled Expr type");
1132+
klee_error("unhandled Expr type");
11281133
return getTrue();
11291134
}
11301135
}

test/Bidirectional/Memory/cond-function-pointer-change.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// RUN: %clang %s -emit-llvm %O0opt -c -fno-discard-value-names -o %t.bc
22
// RUN: rm -rf %t.klee-out
3-
// RUN: %klee --write-kqueries --output-dir=%t.klee-out --max-propagations=5 --max-stack-frames=15 --execution-mode=bidirectional --tmp-skip-fns-in-init=false --initialize-in-join-blocks --function-call-reproduce=reach_error --skip-not-lazy-initialized --forward-ticks=0 --backward-ticks=5 --skip-not-symbolic-objects --write-xml-tests --debug-log=rootpob,backward,conflict,closepob,reached,init --debug-constraints=backward %t.bc 2> %t.log
3+
// RUN: %klee --write-kqueries --output-dir=%t.klee-out --max-propagations=5 --max-stack-frames=15 --execution-mode=bidirectional --tmp-skip-fns-in-init=false --initialize-in-join-blocks --function-call-reproduce=reach_error --skip-not-lazy-initialized --forward-ticks=0 --backward-ticks=5 --skip-not-symbolic-objects --write-xml-tests --debug-log=rootpob,backward,conflict,closepob,reached,init --debug-constraints=backward --use-concretizing-solver=false %t.bc 2> %t.log
44
// RUN: FileCheck %s -input-file=%t.log
55

66
#include "klee/klee.h"

test/Bidirectional/Memory/cond-stack-pointer-change.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// RUN: %clang %s -emit-llvm %O0opt -c -fno-discard-value-names -o %t.bc
22
// RUN: rm -rf %t.klee-out
3-
// RUN: %klee --write-kqueries --output-dir=%t.klee-out --max-propagations=5 --max-stack-frames=15 --execution-mode=bidirectional --tmp-skip-fns-in-init=false --initialize-in-join-blocks --function-call-reproduce=reach_error --skip-not-lazy-initialized --forward-ticks=0 --backward-ticks=5 --skip-not-symbolic-objects --write-xml-tests --debug-log=rootpob,backward,conflict,closepob,reached,init --debug-constraints=backward %t.bc 2> %t.log
3+
// RUN: %klee --write-kqueries --output-dir=%t.klee-out --max-propagations=5 --max-stack-frames=15 --execution-mode=bidirectional --tmp-skip-fns-in-init=false --initialize-in-join-blocks --function-call-reproduce=reach_error --skip-not-lazy-initialized --forward-ticks=0 --backward-ticks=5 --skip-not-symbolic-objects --write-xml-tests --debug-log=rootpob,backward,conflict,closepob,reached,init --debug-constraints=backward --use-concretizing-solver=false %t.bc 2> %t.log
44
// RUN: FileCheck %s -input-file=%t.log
55

66
#include "klee/klee.h"

0 commit comments

Comments
 (0)