1
Fork 0

Use the new C API for PassManagerBuilder.

This commit is contained in:
Rafael Ávila de Espíndola 2011-08-11 19:09:52 -04:00
parent 4cee063976
commit 6402b63b4f
6 changed files with 59 additions and 67 deletions

View file

@ -1,37 +0,0 @@
#include "llvm/Analysis/Passes.h"
#include "llvm/Transforms/IPO/PassManagerBuilder.h"
#include "llvm/Transforms/IPO.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);
}

View file

@ -45,14 +45,6 @@ extern "C" const char *LLVMRustGetLastError(void) {
}
extern "C" void LLVMAddBasicAliasAnalysisPass(LLVMPassManagerRef PM);
extern "C" void LLVMAddStandardModulePasses(LLVMPassManagerRef PM,
unsigned int OptimizationLevel, bool OptimizeSize, bool UnitAtATime,
bool UnrollLoops, bool SimplifyLibCalls,
unsigned int InliningThreshold);
int *RustHackToFetchPassesO = (int*)LLVMAddBasicAliasAnalysisPass;
int *RustHackToFetchPasses2O = (int*)LLVMAddStandardModulePasses;
extern "C" bool LLVMLinkModules(LLVMModuleRef Dest, LLVMModuleRef Src) {
static std::string err;

View file

@ -57,21 +57,17 @@ LLVMAddLoopIdiomPass
LLVMAddLoopRotatePass
LLVMAddLoopUnrollPass
LLVMAddLoopUnswitchPass
LLVMAddLowerSetJmpPass
LLVMAddMemCpyOptPass
LLVMAddModule
LLVMAddModuleProvider
LLVMAddPromoteMemoryToRegisterPass
LLVMAddPruneEHPass
LLVMAddRaiseAllocationsPass
LLVMAddReassociatePass
LLVMAddSCCPPass
LLVMAddScalarReplAggregatesPass
LLVMAddScalarReplAggregatesPassSSA
LLVMAddScalarReplAggregatesPassWithThreshold
LLVMAddSimplifyLibCallsPass
LLVMAddStandardFunctionPasses
LLVMAddStandardModulePasses
LLVMAddStripDeadPrototypesPass
LLVMAddStripSymbolsPass
LLVMAddTailCallEliminationPass
@ -489,7 +485,6 @@ LLVMIsAUIToFPInst
LLVMIsAUnaryInstruction
LLVMIsAUndefValue
LLVMIsAUnreachableInst
LLVMIsAUnwindInst
LLVMIsAUser
LLVMIsAVAArgInst
LLVMIsAZExtInst
@ -522,6 +517,16 @@ LLVMPPCFP128Type
LLVMPPCFP128TypeInContext
LLVMParseBitcode
LLVMParseBitcodeInContext
LLVMPassManagerBuilderCreate
LLVMPassManagerBuilderDispose
LLVMPassManagerBuilderPopulateModulePassManager
LLVMPassManagerBuilderSetDisableSimplifyLibCalls
LLVMPassManagerBuilderSetDisableUnitAtATime
LLVMPassManagerBuilderPopulateFunctionPassManager
LLVMPassManagerBuilderSetDisableUnrollLoops
LLVMPassManagerBuilderSetOptLevel
LLVMPassManagerBuilderSetSizeLevel
LLVMPassManagerBuilderUseInlinerWithThreshold
LLVMPointerSize
LLVMPointerType
LLVMPositionBuilder