From: Jiri Slaby Date: Fri, 15 Jun 2018 07:57:23 +0200 Subject: llvm38: handle optimization passes changes Patch-mainline: no createFunctionAttrsPass was split to createPostOrderFunctionAttrsPass and createReversePostOrderFunctionAttrsPass in LLVM commit e96fb9ab15d4. createGlobalsModRefPass was changed to createGlobalsAAWrapperPass in LLVM commit 9146833fa313. Signed-off-by: Jiri Slaby --- lib/Module/Optimize.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/Module/Optimize.cpp b/lib/Module/Optimize.cpp index 64e4863f70b3..df7b147d0abe 100644 --- a/lib/Module/Optimize.cpp +++ b/lib/Module/Optimize.cpp @@ -35,6 +35,10 @@ #include "llvm/Analysis/Verifier.h" #endif +#if LLVM_VERSION_CODE >= LLVM_VERSION(3, 8) +#include "llvm/Analysis/GlobalsModRef.h" +#endif + using namespace llvm; // Don't verify at the end @@ -102,7 +106,12 @@ static void AddStandardCompilePasses(klee::LegacyLLVMPassManagerTy &PM) { addPass(PM, createCFGSimplificationPass()); // Clean up after IPCP & DAE addPass(PM, createPruneEHPass()); // Remove dead EH info +#if LLVM_VERSION_CODE >= LLVM_VERSION(3, 8) + addPass(PM, createPostOrderFunctionAttrsPass()); + addPass(PM, createReversePostOrderFunctionAttrsPass()); // Deduce function attrs +#else addPass(PM, createFunctionAttrsPass()); // Deduce function attrs +#endif if (!DisableInline) addPass(PM, createFunctionInliningPass()); // Inline small functions @@ -217,8 +226,14 @@ void Optimize(Module *M, const std::string &EntryPoint) { addPass(Passes, createScalarReplAggregatesPass()); // Break up allocas // Run a few AA driven optimizations here and now, to cleanup the code. +#if LLVM_VERSION_CODE >= LLVM_VERSION(3, 8) + addPass(Passes, createPostOrderFunctionAttrsPass()); + addPass(Passes, createReversePostOrderFunctionAttrsPass()); // Add nocapture + addPass(Passes, createGlobalsAAWrapperPass()); // IP alias analysis +#else addPass(Passes, createFunctionAttrsPass()); // Add nocapture addPass(Passes, createGlobalsModRefPass()); // IP alias analysis +#endif addPass(Passes, createLICMPass()); // Hoist loop invariants addPass(Passes, createGVNPass()); // Remove redundancies -- 2.17.1