diff options
author | Cristian Cadar <c.cadar@imperial.ac.uk> | 2018-05-06 09:43:26 +0100 |
---|---|---|
committer | MartinNowack <martin.nowack@gmail.com> | 2018-05-06 22:35:00 +0100 |
commit | 6a7b21b8f84035c262c2bc566a3dc35d44517d33 (patch) | |
tree | 7a078c441c6305a24db63ffbfd2c286c5472f972 /test/regression | |
parent | ab03c1cdce90660dcb75d000ebda817ae589aaec (diff) | |
download | klee-6a7b21b8f84035c262c2bc566a3dc35d44517d33.tar.gz |
Moved regression test to proper location. Fixes #705
Diffstat (limited to 'test/regression')
-rw-r--r-- | test/regression/2014-09-13-debug-info.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/test/regression/2014-09-13-debug-info.c b/test/regression/2014-09-13-debug-info.c new file mode 100644 index 00000000..e372e89e --- /dev/null +++ b/test/regression/2014-09-13-debug-info.c @@ -0,0 +1,41 @@ +// Check that we properly detect states covering new instructions. +// +// RUN: %llvmgcc -I../../../include %s -emit-llvm -O0 -c -o %t1.bc +// RUN: rm -rf %t.klee-out +// RUN: %klee --output-dir=%t.klee-out --only-output-states-covering-new %t1.bc + +// We expect 4 different output states, one for each named value and one "other" +// one with the prefered CEX. We verify this by using ktest-tool to dump the +// values, and then checking the output. +// +// RUN: /bin/sh -c "ktest-tool --write-int %t.klee-out/*.ktest" | sort > %t.data-values +// RUN: FileCheck < %t.data-values %s + +// CHECK: object 0: data: 0 +// CHECK: object 0: data: 17 +// CHECK: object 0: data: 32 +// CHECK: object 0: data: 99 + +#include <klee/klee.h> + +void f0(void) {} +void f1(void) {} +void f2(void) {} +void f3(void) {} + +int main() { + int x = klee_range(0, 256, "x"); + + if (x == 17) { + f0(); + } else if (x == 32) { + f1(); + } else if (x == 99) { + f2(); + } else { + klee_prefer_cex(&x, x == 0); + f3(); + } + + return 0; +} |