mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-28 14:10:41 +00:00
Formatting changes. Don't put spaces in front of some code, which only makes it look 'off'.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154282 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a0126afec8
commit
084cd7fa68
@ -417,17 +417,17 @@ USAGE: opt [options] <input bitcode>
|
|||||||
OPTIONS:
|
OPTIONS:
|
||||||
Optimizations available:
|
Optimizations available:
|
||||||
...
|
...
|
||||||
-funcresolve - Resolve Functions
|
-globalopt - Global Variable Optimizer
|
||||||
-gcse - Global Common Subexpression Elimination
|
-globalsmodref-aa - Simple mod/ref analysis for globals
|
||||||
-globaldce - Dead Global Elimination
|
-gvn - Global Value Numbering
|
||||||
<b>-hello - Hello World Pass</b>
|
<b>-hello - Hello World Pass</b>
|
||||||
-indvars - Canonicalize Induction Variables
|
-indvars - Induction Variable Simplification
|
||||||
-inline - Function Integration/Inlining
|
-inline - Function Integration/Inlining
|
||||||
-instcombine - Combine redundant instructions
|
-insert-edge-profiling - Insert instrumentation for edge profiling
|
||||||
...
|
...
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
<p>The pass name get added as the information string for your pass, giving some
|
<p>The pass name gets added as the information string for your pass, giving some
|
||||||
documentation to users of <tt>opt</tt>. Now that you have a working pass, you
|
documentation to users of <tt>opt</tt>. Now that you have a working pass, you
|
||||||
would go ahead and make it do the cool transformations you want. Once you get
|
would go ahead and make it do the cool transformations you want. Once you get
|
||||||
it all working and tested, it may become useful to find out how fast your pass
|
it all working and tested, it may become useful to find out how fast your pass
|
||||||
@ -545,7 +545,7 @@ following signature:</p>
|
|||||||
<div>
|
<div>
|
||||||
|
|
||||||
<div class="doc_code"><pre>
|
<div class="doc_code"><pre>
|
||||||
<b>virtual bool</b> runOnModule(Module &M) = 0;
|
<b>virtual bool</b> runOnModule(Module &M) = 0;
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
<p>The <tt>runOnModule</tt> method performs the interesting work of the pass.
|
<p>The <tt>runOnModule</tt> method performs the interesting work of the pass.
|
||||||
@ -612,7 +612,7 @@ false if they didn't.</p>
|
|||||||
<div>
|
<div>
|
||||||
|
|
||||||
<div class="doc_code"><pre>
|
<div class="doc_code"><pre>
|
||||||
<b>virtual bool</b> doInitialization(CallGraph &CG);
|
<b>virtual bool</b> doInitialization(CallGraph &CG);
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
<p>The <tt>doIninitialize</tt> method is allowed to do most of the things that
|
<p>The <tt>doIninitialize</tt> method is allowed to do most of the things that
|
||||||
@ -633,7 +633,7 @@ fast).</p>
|
|||||||
<div>
|
<div>
|
||||||
|
|
||||||
<div class="doc_code"><pre>
|
<div class="doc_code"><pre>
|
||||||
<b>virtual bool</b> runOnSCC(CallGraphSCC &SCC) = 0;
|
<b>virtual bool</b> runOnSCC(CallGraphSCC &SCC) = 0;
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
<p>The <tt>runOnSCC</tt> method performs the interesting work of the pass, and
|
<p>The <tt>runOnSCC</tt> method performs the interesting work of the pass, and
|
||||||
@ -652,7 +652,7 @@ otherwise.</p>
|
|||||||
<div>
|
<div>
|
||||||
|
|
||||||
<div class="doc_code"><pre>
|
<div class="doc_code"><pre>
|
||||||
<b>virtual bool</b> doFinalization(CallGraph &CG);
|
<b>virtual bool</b> doFinalization(CallGraph &CG);
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
<p>The <tt>doFinalization</tt> method is an infrequently used method that is
|
<p>The <tt>doFinalization</tt> method is an infrequently used method that is
|
||||||
@ -704,7 +704,7 @@ should return true if they modified the program, or false if they didn't.</p>
|
|||||||
<div>
|
<div>
|
||||||
|
|
||||||
<div class="doc_code"><pre>
|
<div class="doc_code"><pre>
|
||||||
<b>virtual bool</b> doInitialization(Module &M);
|
<b>virtual bool</b> doInitialization(Module &M);
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
<p>The <tt>doIninitialize</tt> method is allowed to do most of the things that
|
<p>The <tt>doIninitialize</tt> method is allowed to do most of the things that
|
||||||
@ -732,7 +732,7 @@ free functions that it needs, adding prototypes to the module if necessary.</p>
|
|||||||
<div>
|
<div>
|
||||||
|
|
||||||
<div class="doc_code"><pre>
|
<div class="doc_code"><pre>
|
||||||
<b>virtual bool</b> runOnFunction(Function &F) = 0;
|
<b>virtual bool</b> runOnFunction(Function &F) = 0;
|
||||||
</pre></div><p>
|
</pre></div><p>
|
||||||
|
|
||||||
<p>The <tt>runOnFunction</tt> method must be implemented by your subclass to do
|
<p>The <tt>runOnFunction</tt> method must be implemented by your subclass to do
|
||||||
@ -751,7 +751,7 @@ be returned if the function is modified.</p>
|
|||||||
<div>
|
<div>
|
||||||
|
|
||||||
<div class="doc_code"><pre>
|
<div class="doc_code"><pre>
|
||||||
<b>virtual bool</b> doFinalization(Module &M);
|
<b>virtual bool</b> doFinalization(Module &M);
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
<p>The <tt>doFinalization</tt> method is an infrequently used method that is
|
<p>The <tt>doFinalization</tt> method is an infrequently used method that is
|
||||||
@ -790,7 +790,7 @@ program, or false if they didn't. </p>
|
|||||||
<div>
|
<div>
|
||||||
|
|
||||||
<div class="doc_code"><pre>
|
<div class="doc_code"><pre>
|
||||||
<b>virtual bool</b> doInitialization(Loop *, LPPassManager &LPM);
|
<b>virtual bool</b> doInitialization(Loop *, LPPassManager &LPM);
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
<p>The <tt>doInitialization</tt> method is designed to do simple initialization
|
<p>The <tt>doInitialization</tt> method is designed to do simple initialization
|
||||||
@ -811,7 +811,7 @@ information.</p>
|
|||||||
<div>
|
<div>
|
||||||
|
|
||||||
<div class="doc_code"><pre>
|
<div class="doc_code"><pre>
|
||||||
<b>virtual bool</b> runOnLoop(Loop *, LPPassManager &LPM) = 0;
|
<b>virtual bool</b> runOnLoop(Loop *, LPPassManager &LPM) = 0;
|
||||||
</pre></div><p>
|
</pre></div><p>
|
||||||
|
|
||||||
<p>The <tt>runOnLoop</tt> method must be implemented by your subclass to do
|
<p>The <tt>runOnLoop</tt> method must be implemented by your subclass to do
|
||||||
@ -829,7 +829,7 @@ should be used to update loop nest.</p>
|
|||||||
<div>
|
<div>
|
||||||
|
|
||||||
<div class="doc_code"><pre>
|
<div class="doc_code"><pre>
|
||||||
<b>virtual bool</b> doFinalization();
|
<b>virtual bool</b> doFinalization();
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
<p>The <tt>doFinalization</tt> method is an infrequently used method that is
|
<p>The <tt>doFinalization</tt> method is an infrequently used method that is
|
||||||
@ -869,7 +869,7 @@ methods should return true if they modified the program, or false if they didn n
|
|||||||
<div>
|
<div>
|
||||||
|
|
||||||
<div class="doc_code"><pre>
|
<div class="doc_code"><pre>
|
||||||
<b>virtual bool</b> doInitialization(Region *, RGPassManager &RGM);
|
<b>virtual bool</b> doInitialization(Region *, RGPassManager &RGM);
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
<p>The <tt>doInitialization</tt> method is designed to do simple initialization
|
<p>The <tt>doInitialization</tt> method is designed to do simple initialization
|
||||||
@ -890,7 +890,7 @@ information.</p>
|
|||||||
<div>
|
<div>
|
||||||
|
|
||||||
<div class="doc_code"><pre>
|
<div class="doc_code"><pre>
|
||||||
<b>virtual bool</b> runOnRegion(Region *, RGPassManager &RGM) = 0;
|
<b>virtual bool</b> runOnRegion(Region *, RGPassManager &RGM) = 0;
|
||||||
</pre></div><p>
|
</pre></div><p>
|
||||||
|
|
||||||
<p>The <tt>runOnRegion</tt> method must be implemented by your subclass to do
|
<p>The <tt>runOnRegion</tt> method must be implemented by your subclass to do
|
||||||
@ -908,7 +908,7 @@ should be used to update region tree.</p>
|
|||||||
<div>
|
<div>
|
||||||
|
|
||||||
<div class="doc_code"><pre>
|
<div class="doc_code"><pre>
|
||||||
<b>virtual bool</b> doFinalization();
|
<b>virtual bool</b> doFinalization();
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
<p>The <tt>doFinalization</tt> method is an infrequently used method that is
|
<p>The <tt>doFinalization</tt> method is an infrequently used method that is
|
||||||
@ -957,7 +957,7 @@ href="#FunctionPass"><tt>FunctionPass</tt></a>'s have, but also have the followi
|
|||||||
<div>
|
<div>
|
||||||
|
|
||||||
<div class="doc_code"><pre>
|
<div class="doc_code"><pre>
|
||||||
<b>virtual bool</b> doInitialization(Function &F);
|
<b>virtual bool</b> doInitialization(Function &F);
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
<p>The <tt>doIninitialize</tt> method is allowed to do most of the things that
|
<p>The <tt>doIninitialize</tt> method is allowed to do most of the things that
|
||||||
@ -978,7 +978,7 @@ fast).</p>
|
|||||||
<div>
|
<div>
|
||||||
|
|
||||||
<div class="doc_code"><pre>
|
<div class="doc_code"><pre>
|
||||||
<b>virtual bool</b> runOnBasicBlock(BasicBlock &BB) = 0;
|
<b>virtual bool</b> runOnBasicBlock(BasicBlock &BB) = 0;
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
<p>Override this function to do the work of the <tt>BasicBlockPass</tt>. This
|
<p>Override this function to do the work of the <tt>BasicBlockPass</tt>. This
|
||||||
@ -998,7 +998,7 @@ if the basic block is modified.</p>
|
|||||||
<div>
|
<div>
|
||||||
|
|
||||||
<div class="doc_code"><pre>
|
<div class="doc_code"><pre>
|
||||||
<b>virtual bool</b> doFinalization(Function &F);
|
<b>virtual bool</b> doFinalization(Function &F);
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
<p>The <tt>doFinalization</tt> method is an infrequently used method that is
|
<p>The <tt>doFinalization</tt> method is an infrequently used method that is
|
||||||
@ -1051,7 +1051,7 @@ data)</li>
|
|||||||
<div>
|
<div>
|
||||||
|
|
||||||
<div class="doc_code"><pre>
|
<div class="doc_code"><pre>
|
||||||
<b>virtual bool</b> runOnMachineFunction(MachineFunction &MF) = 0;
|
<b>virtual bool</b> runOnMachineFunction(MachineFunction &MF) = 0;
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
<p><tt>runOnMachineFunction</tt> can be considered the main entry point of a
|
<p><tt>runOnMachineFunction</tt> can be considered the main entry point of a
|
||||||
@ -1104,7 +1104,7 @@ implement the virtual <tt>print</tt> method:</p>
|
|||||||
<div>
|
<div>
|
||||||
|
|
||||||
<div class="doc_code"><pre>
|
<div class="doc_code"><pre>
|
||||||
<b>virtual void</b> print(std::ostream &O, <b>const</b> Module *M) <b>const</b>;
|
<b>virtual void</b> print(std::ostream &O, <b>const</b> Module *M) <b>const</b>;
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
<p>The <tt>print</tt> method must be implemented by "analyses" in order to print
|
<p>The <tt>print</tt> method must be implemented by "analyses" in order to print
|
||||||
@ -1154,7 +1154,7 @@ having any prerequisite passes, and invalidating <b>all</b> other passes.</p>
|
|||||||
<div>
|
<div>
|
||||||
|
|
||||||
<div class="doc_code"><pre>
|
<div class="doc_code"><pre>
|
||||||
<b>virtual void</b> getAnalysisUsage(AnalysisUsage &Info) <b>const</b>;
|
<b>virtual void</b> getAnalysisUsage(AnalysisUsage &Info) <b>const</b>;
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
<p>By implementing the <tt>getAnalysisUsage</tt> method, the required and
|
<p>By implementing the <tt>getAnalysisUsage</tt> method, the required and
|
||||||
@ -1242,11 +1242,11 @@ the fact that it hacks on the CFG.
|
|||||||
<div>
|
<div>
|
||||||
|
|
||||||
<div class="doc_code"><pre>
|
<div class="doc_code"><pre>
|
||||||
<i>// This example modifies the program, but does not modify the CFG</i>
|
<i>// This example modifies the program, but does not modify the CFG</i>
|
||||||
<b>void</b> <a href="http://llvm.org/doxygen/structLICM.html">LICM</a>::getAnalysisUsage(AnalysisUsage &AU) <b>const</b> {
|
<b>void</b> <a href="http://llvm.org/doxygen/structLICM.html">LICM</a>::getAnalysisUsage(AnalysisUsage &AU) <b>const</b> {
|
||||||
AU.setPreservesCFG();
|
AU.setPreservesCFG();
|
||||||
AU.addRequired<<a href="http://llvm.org/doxygen/classllvm_1_1LoopInfo.html">LoopInfo</a>>();
|
AU.addRequired<<a href="http://llvm.org/doxygen/classllvm_1_1LoopInfo.html">LoopInfo</a>>();
|
||||||
}
|
}
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@ -1268,10 +1268,10 @@ method. It takes a single template argument that specifies which pass class you
|
|||||||
want, and returns a reference to that pass. For example:</p>
|
want, and returns a reference to that pass. For example:</p>
|
||||||
|
|
||||||
<div class="doc_code"><pre>
|
<div class="doc_code"><pre>
|
||||||
bool LICM::runOnFunction(Function &F) {
|
bool LICM::runOnFunction(Function &F) {
|
||||||
LoopInfo &LI = getAnalysis<LoopInfo>();
|
LoopInfo &LI = getAnalysis<LoopInfo>();
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
<p>This method call returns a reference to the pass desired. You may get a
|
<p>This method call returns a reference to the pass desired. You may get a
|
||||||
@ -1285,11 +1285,11 @@ A module level pass can use function level analysis info using this interface.
|
|||||||
For example:</p>
|
For example:</p>
|
||||||
|
|
||||||
<div class="doc_code"><pre>
|
<div class="doc_code"><pre>
|
||||||
bool ModuleLevelPass::runOnModule(Module &M) {
|
bool ModuleLevelPass::runOnModule(Module &M) {
|
||||||
...
|
...
|
||||||
DominatorTree &DT = getAnalysis<DominatorTree>(Func);
|
DominatorTree &DT = getAnalysis<DominatorTree>(Func);
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
<p>In above example, runOnFunction for DominatorTree is called by pass manager
|
<p>In above example, runOnFunction for DominatorTree is called by pass manager
|
||||||
@ -1302,11 +1302,11 @@ If your pass is capable of updating analyses if they exist (e.g.,
|
|||||||
if it is active. For example:</p>
|
if it is active. For example:</p>
|
||||||
|
|
||||||
<div class="doc_code"><pre>
|
<div class="doc_code"><pre>
|
||||||
...
|
...
|
||||||
if (DominatorSet *DS = getAnalysisIfAvailable<DominatorSet>()) {
|
if (DominatorSet *DS = getAnalysisIfAvailable<DominatorSet>()) {
|
||||||
<i>// A DominatorSet is active. This code will update it.</i>
|
<i>// A DominatorSet is active. This code will update it.</i>
|
||||||
}
|
}
|
||||||
...
|
...
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@ -1405,7 +1405,7 @@ Unlike registration of passes, there is no command line argument to be specified
|
|||||||
for the Analysis Group Interface itself, because it is "abstract":</p>
|
for the Analysis Group Interface itself, because it is "abstract":</p>
|
||||||
|
|
||||||
<div class="doc_code"><pre>
|
<div class="doc_code"><pre>
|
||||||
<b>static</b> RegisterAnalysisGroup<<a href="http://llvm.org/doxygen/classllvm_1_1AliasAnalysis.html">AliasAnalysis</a>> A("<i>Alias Analysis</i>");
|
<b>static</b> RegisterAnalysisGroup<<a href="http://llvm.org/doxygen/classllvm_1_1AliasAnalysis.html">AliasAnalysis</a>> A("<i>Alias Analysis</i>");
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
<p>Once the analysis is registered, passes can declare that they are valid
|
<p>Once the analysis is registered, passes can declare that they are valid
|
||||||
@ -1416,10 +1416,9 @@ implementations of the interface by using the following code:</p>
|
|||||||
//<i> Declare that we implement the AliasAnalysis interface</i>
|
//<i> Declare that we implement the AliasAnalysis interface</i>
|
||||||
INITIALIZE_AG_PASS(FancyAA, <a href="http://llvm.org/doxygen/classllvm_1_1AliasAnalysis.html">AliasAnalysis</a>, "<i>somefancyaa</i>",
|
INITIALIZE_AG_PASS(FancyAA, <a href="http://llvm.org/doxygen/classllvm_1_1AliasAnalysis.html">AliasAnalysis</a>, "<i>somefancyaa</i>",
|
||||||
"<i>A more complex alias analysis implementation</i>",
|
"<i>A more complex alias analysis implementation</i>",
|
||||||
false, // <i>Is CFG Only?</i>
|
false, // <i>Is CFG Only?</i>
|
||||||
true, // <i>Is Analysis?</i>
|
true, // <i>Is Analysis?</i>
|
||||||
false, // <i>Is default Analysis Group implementation?</i>
|
false); // <i>Is default Analysis Group implementation?</i>
|
||||||
);
|
|
||||||
}
|
}
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
@ -1436,8 +1435,7 @@ this macro.</p>
|
|||||||
"<i>Basic Alias Analysis (default AA impl)</i>",
|
"<i>Basic Alias Analysis (default AA impl)</i>",
|
||||||
false, // <i>Is CFG Only?</i>
|
false, // <i>Is CFG Only?</i>
|
||||||
true, // <i>Is Analysis?</i>
|
true, // <i>Is Analysis?</i>
|
||||||
true, // <i>Is default Analysis Group implementation?</i>
|
true); // <i>Is default Analysis Group implementation?</i>
|
||||||
);
|
|
||||||
}
|
}
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
@ -1606,10 +1604,10 @@ we need to add the following <a
|
|||||||
href="#getAnalysisUsage"><tt>getAnalysisUsage</tt></a> method to our pass:</p>
|
href="#getAnalysisUsage"><tt>getAnalysisUsage</tt></a> method to our pass:</p>
|
||||||
|
|
||||||
<div class="doc_code"><pre>
|
<div class="doc_code"><pre>
|
||||||
<i>// We don't modify the program, so we preserve all analyses</i>
|
<i>// We don't modify the program, so we preserve all analyses</i>
|
||||||
<b>virtual void</b> getAnalysisUsage(AnalysisUsage &AU) <b>const</b> {
|
<b>virtual void</b> getAnalysisUsage(AnalysisUsage &AU) <b>const</b> {
|
||||||
AU.setPreservesAll();
|
AU.setPreservesAll();
|
||||||
}
|
}
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
<p>Now when we run our pass, we get this output:</p>
|
<p>Now when we run our pass, we get this output:</p>
|
||||||
@ -1717,19 +1715,19 @@ machine passes. Here we will describe how to <i>register</i> a register
|
|||||||
allocator machine pass.</p>
|
allocator machine pass.</p>
|
||||||
|
|
||||||
<p>Implement your register allocator machine pass. In your register allocator
|
<p>Implement your register allocator machine pass. In your register allocator
|
||||||
.cpp file add the following include;</p>
|
<tt>.cpp</tt> file add the following include;</p>
|
||||||
|
|
||||||
<div class="doc_code"><pre>
|
<div class="doc_code"><pre>
|
||||||
#include "llvm/CodeGen/RegAllocRegistry.h"
|
#include "llvm/CodeGen/RegAllocRegistry.h"
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
<p>Also in your register allocator .cpp file, define a creator function in the
|
<p>Also in your register allocator .cpp file, define a creator function in the
|
||||||
form; </p>
|
form; </p>
|
||||||
|
|
||||||
<div class="doc_code"><pre>
|
<div class="doc_code"><pre>
|
||||||
FunctionPass *createMyRegisterAllocator() {
|
FunctionPass *createMyRegisterAllocator() {
|
||||||
return new MyRegisterAllocator();
|
return new MyRegisterAllocator();
|
||||||
}
|
}
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
<p>Note that the signature of this function should match the type of
|
<p>Note that the signature of this function should match the type of
|
||||||
@ -1737,9 +1735,9 @@ form; </p>
|
|||||||
"installing" declaration, in the form;</p>
|
"installing" declaration, in the form;</p>
|
||||||
|
|
||||||
<div class="doc_code"><pre>
|
<div class="doc_code"><pre>
|
||||||
static RegisterRegAlloc myRegAlloc("myregalloc",
|
static RegisterRegAlloc myRegAlloc("myregalloc",
|
||||||
" my register allocator help string",
|
"my register allocator help string",
|
||||||
createMyRegisterAllocator);
|
createMyRegisterAllocator);
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
<p>Note the two spaces prior to the help string produces a tidy result on the
|
<p>Note the two spaces prior to the help string produces a tidy result on the
|
||||||
@ -1790,11 +1788,11 @@ MachinePassRegistry RegisterMyPasses::Registry;
|
|||||||
<p>And finally, declare the command line option for your passes. Example:</p>
|
<p>And finally, declare the command line option for your passes. Example:</p>
|
||||||
|
|
||||||
<div class="doc_code"><pre>
|
<div class="doc_code"><pre>
|
||||||
cl::opt<RegisterMyPasses::FunctionPassCtor, false,
|
cl::opt<RegisterMyPasses::FunctionPassCtor, false,
|
||||||
RegisterPassParser<RegisterMyPasses> >
|
RegisterPassParser<RegisterMyPasses> >
|
||||||
MyPassOpt("mypass",
|
MyPassOpt("mypass",
|
||||||
cl::init(&createDefaultMyPass),
|
cl::init(&createDefaultMyPass),
|
||||||
cl::desc("my pass option help"));
|
cl::desc("my pass option help"));
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
<p>Here the command option is "mypass", with createDefaultMyPass as the default
|
<p>Here the command option is "mypass", with createDefaultMyPass as the default
|
||||||
|
Loading…
Reference in New Issue
Block a user