@@ -113,13 +113,15 @@ initializeExecutionEngine(std::unique_ptr<llvm::Module> M, Logger& logger)
113113
114114#ifndef USE_NEW_PASS_MANAGER
115115
116+ #if LLVM_VERSION_MAJOR < 15
116117void addStandardLinkPasses (llvm::legacy::PassManagerBase& passes)
117118{
118119 llvm::PassManagerBuilder builder;
119120 builder.VerifyInput = true ;
120121 builder.Inliner = llvm::createFunctionInliningPass ();
121122 builder.populateLTOPassManager (passes);
122123}
124+ #endif
123125
124126// / This routine adds optimization passes based on selected optimization level
125127// /
@@ -129,7 +131,6 @@ void addOptimizationPasses(llvm::legacy::PassManagerBase& passes,
129131 const unsigned optLevel,
130132 const unsigned sizeLevel,
131133 const bool disableInline = false ,
132- const bool disableUnitAtATime = false ,
133134 const bool disableLoopUnrolling = false ,
134135 const bool disableLoopVectorization = false ,
135136 const bool disableSLPVectorization = false )
@@ -148,14 +149,6 @@ void addOptimizationPasses(llvm::legacy::PassManagerBase& passes,
148149 builder.Inliner = llvm::createAlwaysInlinerLegacyPass ();
149150 }
150151
151- #if LLVM_VERSION_MAJOR < 9
152- // Enable IPO. This corresponds to gcc's -funit-at-a-time
153- builder.DisableUnitAtATime = disableUnitAtATime;
154- #else
155- // unused from llvm 9
156- (void )(disableUnitAtATime);
157- #endif
158-
159152 // Disable loop unrolling in all relevant passes
160153 builder.DisableUnrollLoops =
161154 disableLoopUnrolling ? disableLoopUnrolling : optLevel == 0 ;
@@ -198,7 +191,9 @@ void LLVMoptimise(llvm::Module& module,
198191 else functionPasses.add (llvm::createTargetTransformInfoWrapperPass (llvm::TargetIRAnalysis ()));
199192
200193
194+ #if LLVM_VERSION_MAJOR < 15
201195 addStandardLinkPasses (passes);
196+ #endif
202197 addOptimizationPasses (passes, functionPasses, TM, optLevel, sizeLevel);
203198
204199 functionPasses.doInitialization ();
@@ -663,6 +658,11 @@ Compiler::Compiler(const CompilerOptions& options)
663658 , mFunctionRegistry ()
664659{
665660 mContext .reset (new llvm::LLVMContext);
661+ #if LLVM_VERSION_MAJOR >= 15
662+ // This will not work from LLVM 16. We'll need to fix this
663+ // https://llvm.org/docs/OpaquePointers.html
664+ mContext ->setOpaquePointers (false );
665+ #endif
666666 mFunctionRegistry = codegen::createDefaultRegistry (&options.mFunctionOptions );
667667}
668668
0 commit comments