LLVM  3.7.0
IPO.cpp
Go to the documentation of this file.
1 //===-- IPO.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/Initialization.h"
17 #include "llvm-c/Transforms/IPO.h"
18 #include "llvm/InitializePasses.h"
20 #include "llvm/Transforms/IPO.h"
21 
22 using namespace llvm;
23 
27  initializeDAEPass(Registry);
28  initializeDAHPass(Registry);
30  initializeGlobalDCEPass(Registry);
31  initializeGlobalOptPass(Registry);
32  initializeIPCPPass(Registry);
42  initializePruneEHPass(Registry);
48  initializeBarrierNoopPass(Registry);
50 }
51 
53  initializeIPO(*unwrap(R));
54 }
55 
58 }
59 
61  unwrap(PM)->add(createConstantMergePass());
62 }
63 
66 }
67 
69  unwrap(PM)->add(createFunctionAttrsPass());
70 }
71 
74 }
75 
78 }
79 
81  unwrap(PM)->add(createGlobalDCEPass());
82 }
83 
86 }
87 
90 }
91 
93  unwrap(PM)->add(createPruneEHPass());
94 }
95 
97  unwrap(PM)->add(createIPSCCPPass());
98 }
99 
100 void LLVMAddInternalizePass(LLVMPassManagerRef PM, unsigned AllButMain) {
101  std::vector<const char *> Export;
102  if (AllButMain)
103  Export.push_back("main");
104  unwrap(PM)->add(createInternalizePass(Export));
105 }
106 
109 }
110 
112  unwrap(PM)->add(createStripSymbolsPass());
113 }
void initializeFunctionAttrsPass(PassRegistry &)
void initializeIPCPPass(PassRegistry &)
ModulePass * createIPConstantPropagationPass()
createIPConstantPropagationPass - This pass propagates constants from call sites into the bodies of f...
void initializeLoopExtractorPass(PassRegistry &)
void initializeStripDeadDebugInfoPass(PassRegistry &)
void initializeSimpleInlinerPass(PassRegistry &)
void LLVMAddGlobalDCEPass(LLVMPassManagerRef PM)
See llvm::createGlobalDCEPass function.
Definition: IPO.cpp:80
A global registry used in conjunction with static constructors to make pluggable components (like tar...
Definition: Registry.h:61
void initializeInternalizePassPass(PassRegistry &)
void initializeEliminateAvailableExternallyPass(PassRegistry &)
ModulePass * createIPSCCPPass()
createIPSCCPPass - This pass propagates constants from call sites into the bodies of functions...
Definition: SCCP.cpp:1661
void LLVMAddPruneEHPass(LLVMPassManagerRef PM)
See llvm::createPruneEHPass function.
Definition: IPO.cpp:92
Pass * createAlwaysInlinerPass()
createAlwaysInlinerPass - Return a new pass object that inlines only functions that are marked as "al...
void LLVMAddAlwaysInlinerPass(LLVMPassManagerRef PM)
See llvm::createAlwaysInlinerPass function.
Definition: IPO.cpp:76
void LLVMAddIPSCCPPass(LLVMPassManagerRef PM)
See llvm::createIPSCCPPass function.
Definition: IPO.cpp:96
Pass * createFunctionAttrsPass()
createFunctionAttrsPass - This pass discovers functions that do not access memory, or only read memory, and gives them the readnone/readonly attribute.
void initializeStripSymbolsPass(PassRegistry &)
void initializePruneEHPass(PassRegistry &)
void LLVMAddConstantMergePass(LLVMPassManagerRef PM)
See llvm::createConstantMergePass function.
Definition: IPO.cpp:60
void initializeArgPromotionPass(PassRegistry &)
void initializeGlobalOptPass(PassRegistry &)
Pass * createArgumentPromotionPass(unsigned maxElements=3)
createArgumentPromotionPass - This pass promotes "by reference" arguments to be passed by value if th...
void initializeStripNonDebugSymbolsPass(PassRegistry &)
void LLVMAddDeadArgEliminationPass(LLVMPassManagerRef PM)
See llvm::createDeadArgEliminationPass function.
Definition: IPO.cpp:64
ModulePass * createGlobalDCEPass()
createGlobalDCEPass - This transform is designed to eliminate unreachable internal globals (functions...
void initializeMergeFunctionsPass(PassRegistry &)
DataLayout * unwrap(LLVMTargetDataRef P)
Definition: DataLayout.h:465
ModulePass * createDeadArgEliminationPass()
createDeadArgEliminationPass - This pass removes arguments from functions which are not used by the b...
void initializeDAEPass(PassRegistry &)
void LLVMAddInternalizePass(LLVMPassManagerRef PM, unsigned AllButMain)
See llvm::createInternalizePass function.
Definition: IPO.cpp:100
ModulePass * createConstantMergePass()
createConstantMergePass - This function returns a new pass that merges duplicate global constants tog...
ModulePass * createGlobalOptimizerPass()
createGlobalOptimizerPass - This function returns a new pass that optimizes non-address taken interna...
Definition: GlobalOpt.cpp:101
void initializeIPO(PassRegistry &)
initializeIPO - Initialize all passes linked into the IPO library.
Definition: IPO.cpp:24
void LLVMAddIPConstantPropagationPass(LLVMPassManagerRef PM)
See llvm::createIPConstantPropagationPass function.
Definition: IPO.cpp:88
void LLVMInitializeIPO(LLVMPassRegistryRef R)
Definition: IPO.cpp:52
struct LLVMOpaquePassRegistry * LLVMPassRegistryRef
Definition: Core.h:119
void initializeAlwaysInlinerPass(PassRegistry &)
void initializePartialInlinerPass(PassRegistry &)
void LLVMAddArgumentPromotionPass(LLVMPassManagerRef PM)
See llvm::createArgumentPromotionPass function.
Definition: IPO.cpp:56
void initializeSingleLoopExtractorPass(PassRegistry &)
void initializeDAHPass(PassRegistry &)
void LLVMAddFunctionInliningPass(LLVMPassManagerRef PM)
See llvm::createFunctionInliningPass function.
Definition: IPO.cpp:72
void initializeGlobalDCEPass(PassRegistry &)
void initializeLowerBitSetsPass(PassRegistry &)
void initializeBlockExtractorPassPass(PassRegistry &)
struct LLVMOpaquePassManager * LLVMPassManagerRef
Definition: Core.h:116
void initializeStripDeadPrototypesPassPass(PassRegistry &)
void LLVMAddStripSymbolsPass(LLVMPassManagerRef PM)
See llvm::createStripSymbolsPass function.
Definition: IPO.cpp:111
ModulePass * createInternalizePass(ArrayRef< const char * > ExportList)
createInternalizePass - This pass loops over all of the functions in the input module, internalizing all globals (functions and variables) it can.
void initializeConstantMergePass(PassRegistry &)
void LLVMAddGlobalOptimizerPass(LLVMPassManagerRef PM)
See llvm::createGlobalOptimizerPass function.
Definition: IPO.cpp:84
void initializeStripDebugDeclarePass(PassRegistry &)
void LLVMAddFunctionAttrsPass(LLVMPassManagerRef PM)
See llvm::createFunctionAttrsPass function.
Definition: IPO.cpp:68
Pass * createFunctionInliningPass()
createFunctionInliningPass - Return a new pass object that uses a heuristic to inline direct function...
Pass * createPruneEHPass()
createPruneEHPass - Return a new pass object which transforms invoke instructions into calls...
Definition: PruneEH.cpp:62
void initializeBarrierNoopPass(PassRegistry &)
ModulePass * createStripDeadPrototypesPass()
createStripDeadPrototypesPass - This pass removes any function declarations (prototypes) that are not...
ModulePass * createStripSymbolsPass(bool OnlyDebugInfo=false)
PassRegistry - This class manages the registration and intitialization of the pass subsystem as appli...
Definition: PassRegistry.h:41
void LLVMAddStripDeadPrototypesPass(LLVMPassManagerRef PM)
See llvm::createStripDeadPrototypesPass function.
Definition: IPO.cpp:107