rustllvm: Add a binding to the LLVM standard module passes

This commit is contained in:
Patrick Walton
2011-05-06 12:02:04 -07:00
parent 5e2088f2fa
commit d089d9f9ed
4 changed files with 36 additions and 1 deletions

24
src/rustllvm/Passes2.cpp Normal file
View File

@@ -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);
}

View File

@@ -68,6 +68,7 @@ LLVMAddScalarReplAggregatesPass
LLVMAddScalarReplAggregatesPassSSA
LLVMAddScalarReplAggregatesPassWithThreshold
LLVMAddSimplifyLibCallsPass
LLVMAddStandardModulePasses
LLVMAddStripDeadPrototypesPass
LLVMAddStripSymbolsPass
LLVMAddTailCallEliminationPass