diff options
| author | Brian Anderson <banderson@mozilla.com> | 2011-07-17 19:16:23 -0700 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2011-07-17 19:16:23 -0700 |
| commit | 09ca57adb0290b015ea54dd44f20c781b98297b9 (patch) | |
| tree | 646099015df41245234fece8ab18709eeac35354 /src/rustllvm/Passes.cpp | |
| parent | 20a3adbc08f0349226f2247a3e3a44a937685864 (diff) | |
| download | rust-09ca57adb0290b015ea54dd44f20c781b98297b9.tar.gz rust-09ca57adb0290b015ea54dd44f20c781b98297b9.zip | |
Revert "Revert "Rename Passes2.cpp to Passes.cpp""
This reverts commit 52507f406ee0dab26681227266ddce7c8ae6d37f.
Diffstat (limited to 'src/rustllvm/Passes.cpp')
| -rw-r--r-- | src/rustllvm/Passes.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/rustllvm/Passes.cpp b/src/rustllvm/Passes.cpp new file mode 100644 index 00000000000..dcc549b511f --- /dev/null +++ b/src/rustllvm/Passes.cpp @@ -0,0 +1,36 @@ +#include "llvm/Analysis/Passes.h" +#include "llvm/Support/PassManagerBuilder.h" +#include "llvm/PassManager.h" +#include "llvm-c/Core.h" +#include <cstdlib> + +using namespace llvm; + +extern "C" void LLVMAddStandardFunctionPasses(LLVMPassManagerRef PM, + unsigned int OptimizationLevel) { + PassManagerBuilder PMBuilder; + PMBuilder.OptLevel = OptimizationLevel; + FunctionPassManager *FPM = (FunctionPassManager*) unwrap(PM); + PMBuilder.populateFunctionPassManager(*FPM); +} + +extern "C" void LLVMAddStandardModulePasses(LLVMPassManagerRef PM, + unsigned int OptimizationLevel, LLVMBool OptimizeSize, + LLVMBool UnitAtATime, LLVMBool UnrollLoops, LLVMBool SimplifyLibCalls, + unsigned int InliningThreshold) { + + PassManagerBuilder PMBuilder; + PMBuilder.OptLevel = OptimizationLevel; + PMBuilder.SizeLevel = OptimizeSize; + PMBuilder.DisableUnitAtATime = !UnitAtATime; + PMBuilder.DisableUnrollLoops = !UnrollLoops; + + PMBuilder.DisableSimplifyLibCalls = !SimplifyLibCalls; + + if (InliningThreshold) + PMBuilder.Inliner = createFunctionInliningPass(InliningThreshold); + + PassManager *MPM = (PassManager*) unwrap(PM); + PMBuilder.populateModulePassManager(*MPM); +} + |
