You've already forked linux-packaging-mono
Imported Upstream version 5.18.0.179
Former-commit-id: 67aa10e65b237e1c4537630979ee99ebe1374215
This commit is contained in:
parent
d6bde52373
commit
8625704ad8
128
external/llvm/lib/Transforms/IPO/IPO.cpp
vendored
Normal file
128
external/llvm/lib/Transforms/IPO/IPO.cpp
vendored
Normal file
@ -0,0 +1,128 @@
|
||||
//===-- IPO.cpp -----------------------------------------------------------===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file implements the common infrastructure (including C bindings) for
|
||||
// libLLVMIPO.a, which implements several transformations over the LLVM
|
||||
// intermediate representation.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm-c/Transforms/IPO.h"
|
||||
#include "llvm-c/Initialization.h"
|
||||
#include "llvm/IR/LegacyPassManager.h"
|
||||
#include "llvm/InitializePasses.h"
|
||||
#include "llvm/Transforms/IPO.h"
|
||||
#include "llvm/Transforms/IPO/AlwaysInliner.h"
|
||||
#include "llvm/Transforms/IPO/FunctionAttrs.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
void llvm::initializeIPO(PassRegistry &Registry) {
|
||||
initializeArgPromotionPass(Registry);
|
||||
initializeCalledValuePropagationLegacyPassPass(Registry);
|
||||
initializeConstantMergeLegacyPassPass(Registry);
|
||||
initializeCrossDSOCFIPass(Registry);
|
||||
initializeDAEPass(Registry);
|
||||
initializeDAHPass(Registry);
|
||||
initializeForceFunctionAttrsLegacyPassPass(Registry);
|
||||
initializeGlobalDCELegacyPassPass(Registry);
|
||||
initializeGlobalOptLegacyPassPass(Registry);
|
||||
initializeGlobalSplitPass(Registry);
|
||||
initializeIPCPPass(Registry);
|
||||
initializeAlwaysInlinerLegacyPassPass(Registry);
|
||||
initializeSimpleInlinerPass(Registry);
|
||||
initializeInferFunctionAttrsLegacyPassPass(Registry);
|
||||
initializeInternalizeLegacyPassPass(Registry);
|
||||
initializeLoopExtractorPass(Registry);
|
||||
initializeBlockExtractorPassPass(Registry);
|
||||
initializeSingleLoopExtractorPass(Registry);
|
||||
initializeLowerTypeTestsPass(Registry);
|
||||
initializeMergeFunctionsPass(Registry);
|
||||
initializePartialInlinerLegacyPassPass(Registry);
|
||||
initializePostOrderFunctionAttrsLegacyPassPass(Registry);
|
||||
initializeReversePostOrderFunctionAttrsLegacyPassPass(Registry);
|
||||
initializePruneEHPass(Registry);
|
||||
initializeStripDeadPrototypesLegacyPassPass(Registry);
|
||||
initializeStripSymbolsPass(Registry);
|
||||
initializeStripDebugDeclarePass(Registry);
|
||||
initializeStripDeadDebugInfoPass(Registry);
|
||||
initializeStripNonDebugSymbolsPass(Registry);
|
||||
initializeBarrierNoopPass(Registry);
|
||||
initializeEliminateAvailableExternallyLegacyPassPass(Registry);
|
||||
initializeSampleProfileLoaderLegacyPassPass(Registry);
|
||||
initializeFunctionImportLegacyPassPass(Registry);
|
||||
initializeWholeProgramDevirtPass(Registry);
|
||||
}
|
||||
|
||||
void LLVMInitializeIPO(LLVMPassRegistryRef R) {
|
||||
initializeIPO(*unwrap(R));
|
||||
}
|
||||
|
||||
void LLVMAddArgumentPromotionPass(LLVMPassManagerRef PM) {
|
||||
unwrap(PM)->add(createArgumentPromotionPass());
|
||||
}
|
||||
|
||||
void LLVMAddCalledValuePropagationPass(LLVMPassManagerRef PM) {
|
||||
unwrap(PM)->add(createCalledValuePropagationPass());
|
||||
}
|
||||
|
||||
void LLVMAddConstantMergePass(LLVMPassManagerRef PM) {
|
||||
unwrap(PM)->add(createConstantMergePass());
|
||||
}
|
||||
|
||||
void LLVMAddDeadArgEliminationPass(LLVMPassManagerRef PM) {
|
||||
unwrap(PM)->add(createDeadArgEliminationPass());
|
||||
}
|
||||
|
||||
void LLVMAddFunctionAttrsPass(LLVMPassManagerRef PM) {
|
||||
unwrap(PM)->add(createPostOrderFunctionAttrsLegacyPass());
|
||||
}
|
||||
|
||||
void LLVMAddFunctionInliningPass(LLVMPassManagerRef PM) {
|
||||
unwrap(PM)->add(createFunctionInliningPass());
|
||||
}
|
||||
|
||||
void LLVMAddAlwaysInlinerPass(LLVMPassManagerRef PM) {
|
||||
unwrap(PM)->add(llvm::createAlwaysInlinerLegacyPass());
|
||||
}
|
||||
|
||||
void LLVMAddGlobalDCEPass(LLVMPassManagerRef PM) {
|
||||
unwrap(PM)->add(createGlobalDCEPass());
|
||||
}
|
||||
|
||||
void LLVMAddGlobalOptimizerPass(LLVMPassManagerRef PM) {
|
||||
unwrap(PM)->add(createGlobalOptimizerPass());
|
||||
}
|
||||
|
||||
void LLVMAddIPConstantPropagationPass(LLVMPassManagerRef PM) {
|
||||
unwrap(PM)->add(createIPConstantPropagationPass());
|
||||
}
|
||||
|
||||
void LLVMAddPruneEHPass(LLVMPassManagerRef PM) {
|
||||
unwrap(PM)->add(createPruneEHPass());
|
||||
}
|
||||
|
||||
void LLVMAddIPSCCPPass(LLVMPassManagerRef PM) {
|
||||
unwrap(PM)->add(createIPSCCPPass());
|
||||
}
|
||||
|
||||
void LLVMAddInternalizePass(LLVMPassManagerRef PM, unsigned AllButMain) {
|
||||
auto PreserveMain = [=](const GlobalValue &GV) {
|
||||
return AllButMain && GV.getName() == "main";
|
||||
};
|
||||
unwrap(PM)->add(createInternalizePass(PreserveMain));
|
||||
}
|
||||
|
||||
void LLVMAddStripDeadPrototypesPass(LLVMPassManagerRef PM) {
|
||||
unwrap(PM)->add(createStripDeadPrototypesPass());
|
||||
}
|
||||
|
||||
void LLVMAddStripSymbolsPass(LLVMPassManagerRef PM) {
|
||||
unwrap(PM)->add(createStripSymbolsPass());
|
||||
}
|
Reference in New Issue
Block a user