11#include " llvm/Analysis/Passes.h"
2- #include " llvm/Support/StandardPasses .h"
2+ #include " llvm/Support/PassManagerBuilder .h"
33#include " llvm/PassManager.h"
44#include " llvm-c/Core.h"
55#include < cstdlib>
@@ -8,22 +8,29 @@ using namespace llvm;
88
99extern " C" void LLVMAddStandardFunctionPasses (LLVMPassManagerRef PM,
1010 unsigned int OptimizationLevel) {
11- createStandardFunctionPasses (unwrap (PM), OptimizationLevel);
11+ PassManagerBuilder PMBuilder;
12+ PMBuilder.OptLevel = OptimizationLevel;
13+ FunctionPassManager *FPM = (FunctionPassManager*) unwrap (PM);
14+ PMBuilder.populateFunctionPassManager (*FPM);
1215}
1316
1417extern " C" void LLVMAddStandardModulePasses (LLVMPassManagerRef PM,
1518 unsigned int OptimizationLevel, LLVMBool OptimizeSize,
1619 LLVMBool UnitAtATime, LLVMBool UnrollLoops, LLVMBool SimplifyLibCalls,
17- LLVMBool HaveExceptions, unsigned int InliningThreshold) {
18- Pass *InliningPass;
20+ unsigned int InliningThreshold) {
21+
22+ PassManagerBuilder PMBuilder;
23+ PMBuilder.OptLevel = OptimizationLevel;
24+ PMBuilder.SizeLevel = OptimizeSize;
25+ PMBuilder.DisableUnitAtATime = !UnitAtATime;
26+ PMBuilder.DisableUnrollLoops = !UnrollLoops;
27+
28+ PMBuilder.DisableSimplifyLibCalls = !SimplifyLibCalls;
29+
1930 if (InliningThreshold)
20- InliningPass = createFunctionInliningPass (InliningThreshold);
21- else
22- InliningPass = NULL ;
31+ PMBuilder.Inliner = createFunctionInliningPass (InliningThreshold);
2332
24- createStandardModulePasses (unwrap (PM), OptimizationLevel, OptimizeSize,
25- UnitAtATime, UnrollLoops, SimplifyLibCalls,
26- HaveExceptions, InliningPass);
33+ PassManager *MPM = (PassManager*) unwrap (PM);
34+ PMBuilder.populateModulePassManager (*MPM);
2735}
2836
29-
0 commit comments