IPO.cpp revision 2c81296bc237cb26c2bb789514e331b3b5b31f79
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 initializeDTEPass(Registry); 29 initializeFunctionAttrsPass(Registry); 30 initializeGlobalDCEPass(Registry); 31 initializeGlobalOptPass(Registry); 32 initializeIPCPPass(Registry); 33 initializeAlwaysInlinerPass(Registry); 34 initializeSimpleInlinerPass(Registry); 35 initializeInternalizePassPass(Registry); 36 initializeLoopExtractorPass(Registry); 37 initializeBlockExtractorPassPass(Registry); 38 initializeSingleLoopExtractorPass(Registry); 39 initializeLowerSetJmpPass(Registry); 40 initializeMergeFunctionsPass(Registry); 41 initializePartialInlinerPass(Registry); 42 initializePartSpecPass(Registry); 43 initializePruneEHPass(Registry); 44 initializeStripDeadPrototypesPassPass(Registry); 45 initializeStripSymbolsPass(Registry); 46 initializeStripDebugDeclarePass(Registry); 47 initializeStripDeadDebugInfoPass(Registry); 48 initializeStripNonDebugSymbolsPass(Registry); 49 initializeSRETPromotionPass(Registry); 50} 51 52void LLVMInitializeIPO(LLVMPassRegistryRef R) { 53 initializeIPO(*unwrap(R)); 54} 55 56void LLVMAddArgumentPromotionPass(LLVMPassManagerRef PM) { 57 unwrap(PM)->add(createArgumentPromotionPass()); 58} 59 60void LLVMAddConstantMergePass(LLVMPassManagerRef PM) { 61 unwrap(PM)->add(createConstantMergePass()); 62} 63 64void LLVMAddDeadArgEliminationPass(LLVMPassManagerRef PM) { 65 unwrap(PM)->add(createDeadArgEliminationPass()); 66} 67 68void LLVMAddDeadTypeEliminationPass(LLVMPassManagerRef PM) { 69 unwrap(PM)->add(createDeadTypeEliminationPass()); 70} 71 72void LLVMAddFunctionAttrsPass(LLVMPassManagerRef PM) { 73 unwrap(PM)->add(createFunctionAttrsPass()); 74} 75 76void LLVMAddFunctionInliningPass(LLVMPassManagerRef PM) { 77 unwrap(PM)->add(createFunctionInliningPass()); 78} 79 80void LLVMAddGlobalDCEPass(LLVMPassManagerRef PM) { 81 unwrap(PM)->add(createGlobalDCEPass()); 82} 83 84void LLVMAddGlobalOptimizerPass(LLVMPassManagerRef PM) { 85 unwrap(PM)->add(createGlobalOptimizerPass()); 86} 87 88void LLVMAddIPConstantPropagationPass(LLVMPassManagerRef PM) { 89 unwrap(PM)->add(createIPConstantPropagationPass()); 90} 91 92void LLVMAddLowerSetJmpPass(LLVMPassManagerRef PM) { 93 unwrap(PM)->add(createLowerSetJmpPass()); 94} 95 96void LLVMAddPruneEHPass(LLVMPassManagerRef PM) { 97 unwrap(PM)->add(createPruneEHPass()); 98} 99 100void LLVMAddIPSCCPPass(LLVMPassManagerRef PM) { 101 unwrap(PM)->add(createIPSCCPPass()); 102} 103 104void LLVMAddInternalizePass(LLVMPassManagerRef PM, unsigned AllButMain) { 105 unwrap(PM)->add(createInternalizePass(AllButMain != 0)); 106} 107 108 109void LLVMAddRaiseAllocationsPass(LLVMPassManagerRef PM) { 110 // FIXME: Remove in LLVM 3.0. 111} 112 113void LLVMAddStripDeadPrototypesPass(LLVMPassManagerRef PM) { 114 unwrap(PM)->add(createStripDeadPrototypesPass()); 115} 116 117void LLVMAddStripSymbolsPass(LLVMPassManagerRef PM) { 118 unwrap(PM)->add(createStripSymbolsPass()); 119} 120