diff options
author | Cristian Cadar <cristic@cs.stanford.edu> | 2013-04-04 11:50:07 +0000 |
---|---|---|
committer | Cristian Cadar <cristic@cs.stanford.edu> | 2013-04-04 11:50:07 +0000 |
commit | cba6931381ef9cc71ea1692ea860848c3f3f4c99 (patch) | |
tree | 406211905ed194974707610f2c4173a3ac4605f9 | |
parent | 7d8fdac598ad879ce973667df53c7acbead1ba2e (diff) | |
download | klee-cba6931381ef9cc71ea1692ea860848c3f3f4c99.tar.gz |
Patch by Michael Contreras and Jiri Slaby for compiling KLEE with LLVM 3.2
git-svn-id: https://llvm.org/svn/llvm-project/klee/trunk@178759 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Core/Executor.cpp | 14 | ||||
-rw-r--r-- | lib/Core/SpecialFunctionHandler.cpp | 4 | ||||
-rw-r--r-- | lib/Module/InstructionInfoTable.cpp | 4 | ||||
-rw-r--r-- | lib/Module/IntrinsicCleaner.cpp | 4 | ||||
-rw-r--r-- | lib/Module/Optimize.cpp | 10 |
5 files changed, 31 insertions, 5 deletions
diff --git a/lib/Core/Executor.cpp b/lib/Core/Executor.cpp index 473f45e5..d0ad811d 100644 --- a/lib/Core/Executor.cpp +++ b/lib/Core/Executor.cpp @@ -1380,7 +1380,12 @@ void Executor::executeInstruction(ExecutionState &state, KInstruction *ki) { CallSite(cast<CallInst>(caller))); // XXX need to check other param attrs ? - if (cs.paramHasAttr(0, llvm::Attribute::SExt)) { +#if LLVM_VERSION_CODE >= LLVM_VERSION(3, 2) + bool isSExt = cs.paramHasAttr(0, llvm::Attributes::SExt); +#else + bool isSExt = cs.paramHasAttr(0, llvm::Attribute::SExt); +#endif + if (isSExt) { result = SExtExpr::create(result, to); } else { result = ZExtExpr::create(result, to); @@ -1579,7 +1584,12 @@ void Executor::executeInstruction(ExecutionState &state, KInstruction *ki) { if (from != to) { // XXX need to check other param attrs ? - if (cs.paramHasAttr(i+1, llvm::Attribute::SExt)) { +#if LLVM_VERSION_CODE >= LLVM_VERSION(3, 2) + bool isSExt = cs.paramHasAttr(i+1, llvm::Attributes::SExt); +#else + bool isSExt = cs.paramHasAttr(i+1, llvm::Attribute::SExt); +#endif + if (isSExt) { arguments[i] = SExtExpr::create(arguments[i], to); } else { arguments[i] = ZExtExpr::create(arguments[i], to); diff --git a/lib/Core/SpecialFunctionHandler.cpp b/lib/Core/SpecialFunctionHandler.cpp index d01a9ef4..d44e13b6 100644 --- a/lib/Core/SpecialFunctionHandler.cpp +++ b/lib/Core/SpecialFunctionHandler.cpp @@ -131,7 +131,11 @@ void SpecialFunctionHandler::prepare() { // Make sure NoReturn attribute is set, for optimization and // coverage counting. if (hi.doesNotReturn) +#if LLVM_VERSION_CODE >= LLVM_VERSION(3, 2) + f->addFnAttr(Attributes::NoReturn); +#else f->addFnAttr(Attribute::NoReturn); +#endif // Change to a declaration since we handle internally (simplifies // module and allows deleting dead code). diff --git a/lib/Module/InstructionInfoTable.cpp b/lib/Module/InstructionInfoTable.cpp index 0e193452..d0ef52d0 100644 --- a/lib/Module/InstructionInfoTable.cpp +++ b/lib/Module/InstructionInfoTable.cpp @@ -24,7 +24,9 @@ #include "llvm/Support/CFG.h" #include "llvm/Support/InstIterator.h" #include "llvm/Support/raw_ostream.h" -#if LLVM_VERSION_CODE >= LLVM_VERSION(2, 7) +#if LLVM_VERSION_CODE >= LLVM_VERSION(3, 2) +#include "llvm/DebugInfo.h" +#elif LLVM_VERSION_CODE >= LLVM_VERSION(2, 7) #include "llvm/Analysis/DebugInfo.h" #endif #include "llvm/Analysis/ValueTracking.h" diff --git a/lib/Module/IntrinsicCleaner.cpp b/lib/Module/IntrinsicCleaner.cpp index fd0db91d..b897fcc7 100644 --- a/lib/Module/IntrinsicCleaner.cpp +++ b/lib/Module/IntrinsicCleaner.cpp @@ -23,7 +23,11 @@ #include "llvm/Module.h" #include "llvm/Pass.h" #include "llvm/Type.h" +#if LLVM_VERSION_CODE >= LLVM_VERSION(3, 2) +#include "llvm/IRBuilder.h" +#else #include "llvm/Support/IRBuilder.h" +#endif #include "llvm/Transforms/Scalar.h" #include "llvm/Transforms/Utils/BasicBlockUtils.h" #if LLVM_VERSION_CODE <= LLVM_VERSION(3, 1) diff --git a/lib/Module/Optimize.cpp b/lib/Module/Optimize.cpp index da2c9733..d05002fe 100644 --- a/lib/Module/Optimize.cpp +++ b/lib/Module/Optimize.cpp @@ -197,8 +197,14 @@ void Optimize(Module* M) { // Now that composite has been compiled, scan through the module, looking // for a main function. If main is defined, mark all other functions // internal. - if (!DisableInternalize) - addPass(Passes, createInternalizePass(true)); + if (!DisableInternalize) { +#if LLVM_VERSION_CODE >= LLVM_VERSION(3, 2) + ModulePass *pass = createInternalizePass(createInternalizePass(std::vector<const char *>(1, "main")); +#else + ModulePass *pass = createInternalizePass(true); +#endif + addPass(Passes, pass); + } // Propagate constants at call sites into the functions they call. This // opens opportunities for globalopt (and inlining) by substituting function |