diff options
author | Martin Nowack <martin.nowack@gmail.com> | 2018-05-08 11:27:00 +0100 |
---|---|---|
committer | Cristian Cadar <c.cadar@imperial.ac.uk> | 2018-05-09 10:44:27 +0100 |
commit | 8affd4a2dfbb08d820387f8e28f95a3a7276b710 (patch) | |
tree | 959953ca65b243e033be394e6f5f8285bd32c303 | |
parent | bf287fa76dc82b4fc6cf2fae2cbe8e6134ee2479 (diff) | |
download | klee-8affd4a2dfbb08d820387f8e28f95a3a7276b710.tar.gz |
Remove workaround for bug in older LLVM version (< 3)
-rw-r--r-- | lib/Module/IntrinsicCleaner.cpp | 3 | ||||
-rw-r--r-- | lib/Module/KModule.cpp | 7 | ||||
-rw-r--r-- | lib/Module/Passes.h | 10 |
3 files changed, 6 insertions, 14 deletions
diff --git a/lib/Module/IntrinsicCleaner.cpp b/lib/Module/IntrinsicCleaner.cpp index b0260520..10b5df08 100644 --- a/lib/Module/IntrinsicCleaner.cpp +++ b/lib/Module/IntrinsicCleaner.cpp @@ -233,8 +233,7 @@ bool IntrinsicCleanerPass::runOnBasicBlock(BasicBlock &b, Module &M) { break; } default: - if (LowerIntrinsics) - IL->LowerIntrinsicCall(ii); + IL->LowerIntrinsicCall(ii); dirty = true; break; } diff --git a/lib/Module/KModule.cpp b/lib/Module/KModule.cpp index 032929e8..0f0d8fed 100644 --- a/lib/Module/KModule.cpp +++ b/lib/Module/KModule.cpp @@ -215,11 +215,8 @@ void KModule::prepare(const Interpreter::ModuleOptions &opts, pm.add(createScalarizerPass()); if (opts.CheckDivZero) pm.add(new DivCheckPass()); if (opts.CheckOvershift) pm.add(new OvershiftCheckPass()); - // FIXME: This false here is to work around a bug in - // IntrinsicLowering which caches values which may eventually be - // deleted (via RAUW). This can be removed once LLVM fixes this - // issue. - pm.add(new IntrinsicCleanerPass(*targetData, false)); + + pm.add(new IntrinsicCleanerPass(*targetData)); pm.run(*module); if (opts.Optimize) diff --git a/lib/Module/Passes.h b/lib/Module/Passes.h index 6ebcc98f..88c0ce8c 100644 --- a/lib/Module/Passes.h +++ b/lib/Module/Passes.h @@ -59,16 +59,12 @@ class IntrinsicCleanerPass : public llvm::ModulePass { static char ID; const llvm::DataLayout &DataLayout; llvm::IntrinsicLowering *IL; - bool LowerIntrinsics; bool runOnBasicBlock(llvm::BasicBlock &b, llvm::Module &M); public: - IntrinsicCleanerPass(const llvm::DataLayout &TD, - bool LI=true) - : llvm::ModulePass(ID), - DataLayout(TD), - IL(new llvm::IntrinsicLowering(TD)), - LowerIntrinsics(LI) {} + IntrinsicCleanerPass(const llvm::DataLayout &TD, bool LI = true) + : llvm::ModulePass(ID), DataLayout(TD), + IL(new llvm::IntrinsicLowering(TD)) {} ~IntrinsicCleanerPass() { delete IL; } virtual bool runOnModule(llvm::Module &M); |