IPO.cpp revision 2626dba9c5515d2e534c117bb16ceb03dd4d0930
1//===-- Scalar.cpp --------------------------------------------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This file implements the common infrastructure (including C bindings) for 11// libLLVMIPO.a, which implements several transformations over the LLVM 12// intermediate representation. 13// 14//===----------------------------------------------------------------------===// 15 16#include "llvm-c/Transforms/IPO.h" 17#include "llvm/InitializePasses.h" 18#include "llvm/PassManager.h" 19#include "llvm/Transforms/IPO.h" 20 21using namespace llvm; 22 23void llvm::initializeIPO(PassRegistry &Registry) { 24 initializeArgPromotionPass(Registry); 25 initializeConstantMergePass(Registry); 26 initializeDAEPass(Registry); 27 initializeDAHPass(Registry); 28 initializeFunctionAttrsPass(Registry); 29 initializeGlobalDCEPass(Registry); 30 initializeGlobalOptPass(Registry); 31 initializeIPCPPass(Registry); 32 initializeAlwaysInlinerPass(Registry); 33 initializeSimpleInlinerPass(Registry); 34 initializeInternalizePassPass(Registry); 35 initializeLoopExtractorPass(Registry); 36 initializeBlockExtractorPassPass(Registry); 37 initializeSingleLoopExtractorPass(Registry); 38 initializeMergeFunctionsPass(Registry); 39 initializePartialInlinerPass(Registry); 40 initializePruneEHPass(Registry); 41 initializeStripDeadPrototypesPassPass(Registry); 42 initializeStripSymbolsPass(Registry); 43 initializeStripDebugDeclarePass(Registry); 44 initializeStripDeadDebugInfoPass(Registry); 45 initializeStripNonDebugSymbolsPass(Registry); 46} 47 48void LLVMInitializeIPO(LLVMPassRegistryRef R) { 49 initializeIPO(*unwrap(R)); 50} 51 52void LLVMAddArgumentPromotionPass(LLVMPassManagerRef PM) { 53 unwrap(PM)->add(createArgumentPromotionPass()); 54} 55 56void LLVMAddConstantMergePass(LLVMPassManagerRef PM) { 57 unwrap(PM)->add(createConstantMergePass()); 58} 59 60void LLVMAddDeadArgEliminationPass(LLVMPassManagerRef PM) { 61 unwrap(PM)->add(createDeadArgEliminationPass()); 62} 63 64void LLVMAddFunctionAttrsPass(LLVMPassManagerRef PM) { 65 unwrap(PM)->add(createFunctionAttrsPass()); 66} 67 68void LLVMAddFunctionInliningPass(LLVMPassManagerRef PM) { 69 unwrap(PM)->add(createFunctionInliningPass()); 70} 71 72void LLVMAddAlwaysInlinerPass(LLVMPassManagerRef PM) { 73 unwrap(PM)->add(llvm::createAlwaysInlinerPass()); 74} 75 76void LLVMAddGlobalDCEPass(LLVMPassManagerRef PM) { 77 unwrap(PM)->add(createGlobalDCEPass()); 78} 79 80void LLVMAddGlobalOptimizerPass(LLVMPassManagerRef PM) { 81 unwrap(PM)->add(createGlobalOptimizerPass()); 82} 83 84void LLVMAddIPConstantPropagationPass(LLVMPassManagerRef PM) { 85 unwrap(PM)->add(createIPConstantPropagationPass()); 86} 87 88void LLVMAddPruneEHPass(LLVMPassManagerRef PM) { 89 unwrap(PM)->add(createPruneEHPass()); 90} 91 92void LLVMAddIPSCCPPass(LLVMPassManagerRef PM) { 93 unwrap(PM)->add(createIPSCCPPass()); 94} 95 96void LLVMAddInternalizePass(LLVMPassManagerRef PM, unsigned AllButMain) { 97 unwrap(PM)->add(createInternalizePass(AllButMain != 0)); 98} 99 100void LLVMAddStripDeadPrototypesPass(LLVMPassManagerRef PM) { 101 unwrap(PM)->add(createStripDeadPrototypesPass()); 102} 103 104void LLVMAddStripSymbolsPass(LLVMPassManagerRef PM) { 105 unwrap(PM)->add(createStripSymbolsPass()); 106} 107