about summary refs log tree commit diff homepage
diff options
context:
space:
mode:
authorCristian Cadar <cristic@cs.stanford.edu>2009-07-10 21:13:15 +0000
committerCristian Cadar <cristic@cs.stanford.edu>2009-07-10 21:13:15 +0000
commit3951254da613913829b2419b05cb7c3758570e98 (patch)
treedb59cd04fcaa5ac0a1680fa719294b8702dec405
parentf0a7f0d1b929424776b103cde45b2b60d98f5f48 (diff)
downloadklee-3951254da613913829b2419b05cb7c3758570e98.tar.gz
Updated the Not operation for constants. Added extra test case for this.
git-svn-id: https://llvm.org/svn/llvm-project/klee/trunk@75282 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Expr/Expr.cpp2
-rw-r--r--test/Expr/Parser/ConstantFolding.pc5
2 files changed, 6 insertions, 1 deletions
diff --git a/lib/Expr/Expr.cpp b/lib/Expr/Expr.cpp
index 763a4be1..4d9e5abe 100644
--- a/lib/Expr/Expr.cpp
+++ b/lib/Expr/Expr.cpp
@@ -423,7 +423,7 @@ ref<ConstantExpr> ConstantExpr::AShr(const ref<ConstantExpr> &RHS) {
 }
 
 ref<ConstantExpr> ConstantExpr::Not() {
-  return ConstantExpr::alloc(value == 0, Expr::Bool);
+  return ConstantExpr::alloc(~value);
 }
 
 ref<ConstantExpr> ConstantExpr::Eq(const ref<ConstantExpr> &RHS) {
diff --git a/test/Expr/Parser/ConstantFolding.pc b/test/Expr/Parser/ConstantFolding.pc
index 56895e53..2c8a4c52 100644
--- a/test/Expr/Parser/ConstantFolding.pc
+++ b/test/Expr/Parser/ConstantFolding.pc
@@ -190,3 +190,8 @@ array a[64] : w32 -> w8 = symbolic
 # RUN: grep -A 2 \"# Query 36$\" %t > %t2
 # RUN: grep \"(query .. false .(Eq 0 (Read w8 0 a)).\" %t2
 (query [] false [(Not (Not (Eq 0 (Read w8 0 a))))])
+
+# Check -- !Const
+# RUN: grep -A 2 \"# Query 37$\" %t > %t2
+# RUN: grep \"(query .. false .true.\" %t2
+(query [] false [(Eq (Not w32 0xdeadbeef) 0x21524110)])