32 errs() <<
"DomTree dump not available, build with DEBUG\n";
38 this->
viewGraph(
"domtree",
"Dominator Tree for function");
40 errs() <<
"DomTree dump not available, build with DEBUG\n";
45struct LegacyDominatorTreeWrapperPassAnalysisGraphTraits {
51struct DomViewerWrapperPass
53 DominatorTreeWrapperPass, false, DominatorTree *,
54 LegacyDominatorTreeWrapperPassAnalysisGraphTraits> {
56 DomViewerWrapperPass()
57 : DOTGraphTraitsViewerWrapperPass<
58 DominatorTreeWrapperPass,
false, DominatorTree *,
59 LegacyDominatorTreeWrapperPassAnalysisGraphTraits>(
"dom",
ID) {}
62struct DomOnlyViewerWrapperPass
64 DominatorTreeWrapperPass, true, DominatorTree *,
65 LegacyDominatorTreeWrapperPassAnalysisGraphTraits> {
67 DomOnlyViewerWrapperPass()
68 : DOTGraphTraitsViewerWrapperPass<
69 DominatorTreeWrapperPass,
true, DominatorTree *,
70 LegacyDominatorTreeWrapperPassAnalysisGraphTraits>(
"domonly",
ID) {}
73struct LegacyPostDominatorTreeWrapperPassAnalysisGraphTraits {
74 static PostDominatorTree *getGraph(PostDominatorTreeWrapperPass *PDTWP) {
79struct PostDomViewerWrapperPass
81 PostDominatorTreeWrapperPass, false, PostDominatorTree *,
82 LegacyPostDominatorTreeWrapperPassAnalysisGraphTraits> {
84 PostDomViewerWrapperPass()
85 : DOTGraphTraitsViewerWrapperPass<
86 PostDominatorTreeWrapperPass,
false, PostDominatorTree *,
87 LegacyPostDominatorTreeWrapperPassAnalysisGraphTraits>(
"postdom",
91struct PostDomOnlyViewerWrapperPass
93 PostDominatorTreeWrapperPass, true, PostDominatorTree *,
94 LegacyPostDominatorTreeWrapperPassAnalysisGraphTraits> {
96 PostDomOnlyViewerWrapperPass()
97 : DOTGraphTraitsViewerWrapperPass<
98 PostDominatorTreeWrapperPass,
true, PostDominatorTree *,
99 LegacyPostDominatorTreeWrapperPassAnalysisGraphTraits>(
100 "postdomonly",
ID) {}
104char DomViewerWrapperPass::ID = 0;
106 "View dominance tree of function",
false,
false)
108char DomOnlyViewerWrapperPass::ID = 0;
110 "View dominance tree of function (with no function bodies)",
113char PostDomViewerWrapperPass::ID = 0;
115 "View postdominance tree of function", false, false)
117char PostDomOnlyViewerWrapperPass::ID = 0;
119 "View postdominance tree of function "
120 "(with no function bodies)",
124struct DomPrinterWrapperPass
126 DominatorTreeWrapperPass, false, DominatorTree *,
127 LegacyDominatorTreeWrapperPassAnalysisGraphTraits> {
129 DomPrinterWrapperPass()
132 LegacyDominatorTreeWrapperPassAnalysisGraphTraits>(
"dom", ID) {}
135struct DomOnlyPrinterWrapperPass
137 DominatorTreeWrapperPass, true, DominatorTree *,
138 LegacyDominatorTreeWrapperPassAnalysisGraphTraits> {
140 DomOnlyPrinterWrapperPass()
143 LegacyDominatorTreeWrapperPassAnalysisGraphTraits>(
"domonly", ID) {}
146struct PostDomPrinterWrapperPass
148 PostDominatorTreeWrapperPass, false, PostDominatorTree *,
149 LegacyPostDominatorTreeWrapperPassAnalysisGraphTraits> {
151 PostDomPrinterWrapperPass()
154 LegacyPostDominatorTreeWrapperPassAnalysisGraphTraits>(
"postdom",
158struct PostDomOnlyPrinterWrapperPass
160 PostDominatorTreeWrapperPass, true, PostDominatorTree *,
161 LegacyPostDominatorTreeWrapperPassAnalysisGraphTraits> {
163 PostDomOnlyPrinterWrapperPass()
166 LegacyPostDominatorTreeWrapperPassAnalysisGraphTraits>(
167 "postdomonly", ID) {}
171char DomPrinterWrapperPass::ID = 0;
173 "Print dominance tree of function to 'dot' file",
false,
false)
175char DomOnlyPrinterWrapperPass::ID = 0;
177 "Print dominance tree of function to 'dot' file "
178 "(with no function bodies)",
181char PostDomPrinterWrapperPass::ID = 0;
183 "Print postdominance tree of function to 'dot' file", false,
186char PostDomOnlyPrinterWrapperPass::ID = 0;
188 "Print postdominance tree of function to 'dot' file "
189 "(with no function bodies)",
197 return new DomPrinterWrapperPass();
201 return new DomOnlyPrinterWrapperPass();
205 return new DomViewerWrapperPass();
209 return new DomOnlyViewerWrapperPass();
213 return new PostDomPrinterWrapperPass();
217 return new PostDomOnlyPrinterWrapperPass();
221 return new PostDomViewerWrapperPass();
225 return new PostDomOnlyViewerWrapperPass();
Function Alias Analysis false
#define INITIALIZE_PASS(passName, arg, name, cfg, analysis)
Legacy analysis pass which computes a DominatorTree.
DominatorTree & getDomTree()
Concrete subclass of DominatorTreeBase that is used to compute a normal dominator tree.
LLVM_ABI void viewGraph()
FunctionPass class - This class is used to implement most global optimizations.
PostDominatorTree Class - Concrete subclass of DominatorTree that is used to compute the post-dominat...
Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...
This is an optimization pass for GlobalISel generic memory operations.
LLVM_ABI FunctionPass * createDomOnlyPrinterWrapperPassPass()
LLVM_ABI FunctionPass * createPostDomOnlyViewerWrapperPassPass()
LLVM_ABI FunctionPass * createPostDomViewerWrapperPassPass()
LLVM_ABI FunctionPass * createDomPrinterWrapperPassPass()
LLVM_ABI FunctionPass * createPostDomOnlyPrinterWrapperPassPass()
LLVM_ABI raw_fd_ostream & errs()
This returns a reference to a raw_ostream for standard error.
LLVM_ABI FunctionPass * createDomOnlyViewerWrapperPassPass()
void ViewGraph(const GraphType &G, const Twine &Name, bool ShortNames=false, const Twine &Title="", GraphProgram::Name Program=GraphProgram::DOT)
ViewGraph - Emit a dot graph, run 'dot', run gv on the postscript file, then cleanup.
LLVM_ABI FunctionPass * createPostDomPrinterWrapperPassPass()
LLVM_ABI FunctionPass * createDomViewerWrapperPassPass()
PostDominatorTree & getPostDomTree()