diff options
Diffstat (limited to 'src/rustllvm')
| -rw-r--r-- | src/rustllvm/Passes2.cpp | 24 | ||||
| -rw-r--r-- | src/rustllvm/rustllvm.def.in | 1 |
2 files changed, 25 insertions, 0 deletions
diff --git a/src/rustllvm/Passes2.cpp b/src/rustllvm/Passes2.cpp new file mode 100644 index 00000000..a0a6a20c --- /dev/null +++ b/src/rustllvm/Passes2.cpp @@ -0,0 +1,24 @@ +#include "llvm/Analysis/Passes.h" +#include "llvm/Support/StandardPasses.h" +#include "llvm/PassManager.h" +#include "llvm-c/Core.h" +#include <cstdlib> + +using namespace llvm; + +extern "C" void LLVMAddStandardModulePasses(LLVMPassManagerRef PM, + unsigned int OptimizationLevel, bool OptimizeSize, bool UnitAtATime, + bool UnrollLoops, bool SimplifyLibCalls, bool HaveExceptions, + unsigned int InliningThreshold) { + Pass *InliningPass; + if (InliningThreshold) + InliningPass = createFunctionInliningPass(InliningThreshold); + else + InliningPass = NULL; + + createStandardModulePasses(unwrap(PM), OptimizationLevel, OptimizeSize, + UnitAtATime, UnrollLoops, SimplifyLibCalls, + HaveExceptions, InliningPass); +} + + diff --git a/src/rustllvm/rustllvm.def.in b/src/rustllvm/rustllvm.def.in index 748c77aa..e52f2908 100644 --- a/src/rustllvm/rustllvm.def.in +++ b/src/rustllvm/rustllvm.def.in @@ -68,6 +68,7 @@ LLVMAddScalarReplAggregatesPass LLVMAddScalarReplAggregatesPassSSA LLVMAddScalarReplAggregatesPassWithThreshold LLVMAddSimplifyLibCallsPass +LLVMAddStandardModulePasses LLVMAddStripDeadPrototypesPass LLVMAddStripSymbolsPass LLVMAddTailCallEliminationPass |