LLVM  16.0.0git
Utils.h
Go to the documentation of this file.
1 //===- llvm/Transforms/Utils.h - Utility Transformations --------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This header file defines prototypes for accessor functions that expose passes
10 // in the Utils transformations library.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 #ifndef LLVM_TRANSFORMS_UTILS_H
15 #define LLVM_TRANSFORMS_UTILS_H
16 
17 namespace llvm {
18 
19 class ModulePass;
20 class FunctionPass;
21 class Pass;
22 
23 //===----------------------------------------------------------------------===//
24 // createMetaRenamerPass - Rename everything with metasyntatic names.
25 //
26 ModulePass *createMetaRenamerPass();
27 
28 //===----------------------------------------------------------------------===//
29 //
30 // LowerInvoke - This pass removes invoke instructions, converting them to call
31 // instructions.
32 //
33 FunctionPass *createLowerInvokePass();
34 extern char &LowerInvokePassID;
35 
36 //===----------------------------------------------------------------------===//
37 //
38 // InstructionNamer - Give any unnamed non-void instructions "tmp" names.
39 //
40 FunctionPass *createInstructionNamerPass();
41 extern char &InstructionNamerID;
42 
43 //===----------------------------------------------------------------------===//
44 //
45 // LowerSwitch - This pass converts SwitchInst instructions into a sequence of
46 // chained binary branch instructions.
47 //
48 FunctionPass *createLowerSwitchPass();
49 extern char &LowerSwitchID;
50 
51 //===----------------------------------------------------------------------===//
52 //
53 // BreakCriticalEdges - Break all of the critical edges in the CFG by inserting
54 // a dummy basic block. This pass may be "required" by passes that cannot deal
55 // with critical edges. For this usage, a pass must call:
56 //
57 // AU.addRequiredID(BreakCriticalEdgesID);
58 //
59 // This pass obviously invalidates the CFG, but can update forward dominator
60 // (set, immediate dominators, tree, and frontier) information.
61 //
62 FunctionPass *createBreakCriticalEdgesPass();
63 extern char &BreakCriticalEdgesID;
64 
65 //===----------------------------------------------------------------------===//
66 //
67 // LCSSA - This pass inserts phi nodes at loop boundaries to simplify other loop
68 // optimizations.
69 //
71 extern char &LCSSAID;
72 
73 //===----------------------------------------------------------------------===//
74 //
75 // AddDiscriminators - Add DWARF path discriminators to the IR.
76 FunctionPass *createAddDiscriminatorsPass();
77 
78 //===----------------------------------------------------------------------===//
79 //
80 // PromoteMemoryToRegister - This pass is used to promote memory references to
81 // be register references. A simple example of the transformation performed by
82 // this pass is:
83 //
84 // FROM CODE TO CODE
85 // %X = alloca i32, i32 1 ret i32 42
86 // store i32 42, i32 *%X
87 // %Y = load i32* %X
88 // ret i32 %Y
89 //
90 FunctionPass *createPromoteMemoryToRegisterPass();
91 
92 //===----------------------------------------------------------------------===//
93 //
94 // LoopSimplify - Insert Pre-header blocks into the CFG for every function in
95 // the module. This pass updates dominator information, loop information, and
96 // does not add critical edges to the CFG.
97 //
98 // AU.addRequiredID(LoopSimplifyID);
99 //
101 extern char &LoopSimplifyID;
102 
103 /// This function returns a new pass that downgrades the debug info in the
104 /// module to line tables only.
106 
107 //===----------------------------------------------------------------------===//
108 //
109 // InjectTLIMappingsLegacy - populates the VFABI attribute with the
110 // scalar-to-vector mappings from the TargetLibraryInfo.
111 //
112 FunctionPass *createInjectTLIMappingsLegacyPass();
113 
114 //===----------------------------------------------------------------------===//
115 //
116 // UnifyLoopExits - For each loop, creates a new block N such that all exiting
117 // blocks branch to N, and then N distributes control flow to all the original
118 // exit blocks.
119 //
120 FunctionPass *createUnifyLoopExitsPass();
121 
122 //===----------------------------------------------------------------------===//
123 //
124 // FixIrreducible - Convert each SCC with irreducible control-flow
125 // into a natural loop.
126 //
127 FunctionPass *createFixIrreduciblePass();
128 
129 //===----------------------------------------------------------------------===//
130 //
131 // AssumeSimplify - remove redundant assumes and merge assumes in the same
132 // BasicBlock when possible.
133 //
134 FunctionPass *createAssumeSimplifyPass();
135 
136 //===----------------------------------------------------------------------===//
137 //
138 // CanonicalizeFreezeInLoops - Canonicalize freeze instructions in loops so they
139 // don't block SCEV.
140 //
142 
143 //===----------------------------------------------------------------------===//
144 // LowerGlobalDtorsLegacy - Lower @llvm.global_dtors by creating wrapper
145 // functions that are registered in @llvm.global_ctors and which contain a call
146 // to `__cxa_atexit` to register their destructor functions.
148 } // namespace llvm
149 
150 #endif
llvm::createAssumeSimplifyPass
FunctionPass * createAssumeSimplifyPass()
Definition: AssumeBundleBuilder.cpp:606
llvm::createLowerInvokePass
FunctionPass * createLowerInvokePass()
Definition: LowerInvoke.cpp:85
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
Pass
print lazy value Lazy Value Info Printer Pass
Definition: LazyValueInfo.cpp:1999
llvm::InstructionNamerID
char & InstructionNamerID
llvm::createBreakCriticalEdgesPass
FunctionPass * createBreakCriticalEdgesPass()
llvm::createFixIrreduciblePass
FunctionPass * createFixIrreduciblePass()
Definition: FixIrreducible.cpp:104
llvm::createInstructionNamerPass
FunctionPass * createInstructionNamerPass()
llvm::createLowerGlobalDtorsLegacyPass
ModulePass * createLowerGlobalDtorsLegacyPass()
llvm::createUnifyLoopExitsPass
FunctionPass * createUnifyLoopExitsPass()
Definition: UnifyLoopExits.cpp:61
llvm::createInjectTLIMappingsLegacyPass
FunctionPass * createInjectTLIMappingsLegacyPass()
Definition: InjectTLIMappings.cpp:174
llvm::createCanonicalizeFreezeInLoopsPass
Pass * createCanonicalizeFreezeInLoopsPass()
Definition: CanonicalizeFreezeInLoops.cpp:244
llvm::createLowerSwitchPass
FunctionPass * createLowerSwitchPass()
Definition: LowerSwitch.cpp:587
llvm::createLCSSAPass
Pass * createLCSSAPass()
Definition: LCSSA.cpp:491
llvm::LowerInvokePassID
char & LowerInvokePassID
Definition: LowerInvoke.cpp:82
llvm::createStripNonLineTableDebugLegacyPass
ModulePass * createStripNonLineTableDebugLegacyPass()
This function returns a new pass that downgrades the debug info in the module to line tables only.
llvm::createMetaRenamerPass
ModulePass * createMetaRenamerPass()
Definition: MetaRenamer.cpp:238
llvm::createLoopSimplifyPass
Pass * createLoopSimplifyPass()
Definition: LoopSimplify.cpp:790
llvm::LowerSwitchID
char & LowerSwitchID
Definition: LowerSwitch.cpp:577
llvm::LCSSAID
char & LCSSAID
Definition: LCSSA.cpp:492
llvm::LoopSimplifyID
char & LoopSimplifyID
Definition: LoopSimplify.cpp:789
llvm::BreakCriticalEdgesID
char & BreakCriticalEdgesID
llvm::createPromoteMemoryToRegisterPass
FunctionPass * createPromoteMemoryToRegisterPass()
Definition: Mem2Reg.cpp:114
llvm::createAddDiscriminatorsPass
FunctionPass * createAddDiscriminatorsPass()
Definition: AddDiscriminators.cpp:111