Update doc to reflect changes I am about to install to fix PR 888.
authorDevang Patel <dpatel@apple.com>
Tue, 1 May 2007 20:55:38 +0000 (20:55 +0000)
committerDevang Patel <dpatel@apple.com>
Tue, 1 May 2007 20:55:38 +0000 (20:55 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36631 91177308-0d34-0410-b5e6-96231b3b80d8

docs/WritingAnLLVMPass.html

index 8f2c7af1aa4e1186d0787122e884752d7d9f4e70..13849d0dba1b2f10cac3fe00868fb44012cce6bf 100644 (file)
@@ -262,6 +262,14 @@ href="#passtype">later</a>, but for now, know that <a
 href="#FunctionPass"><tt>FunctionPass</tt></a>'s operate a function at a
 time.</p>
 
+<div class="doc_code"><pre>
+     static const int ID;
+     Hello() : FunctionPass((intptr_t)&ID) {}
+</pre></div><p>
+
+<p> This declares pass identifier used by LLVM to identify pass. This allows LLVM to
+avoid using expensive C++ runtime information.</p>
+
 <div class="doc_code"><pre>
     <b>virtual bool</b> <a href="#runOnFunction">runOnFunction</a>(Function &amp;F) {
       llvm::cerr &lt;&lt; "<i>Hello: </i>" &lt;&lt; F.getName() &lt;&lt; "\n";
@@ -276,6 +284,13 @@ href="#FunctionPass"><tt>FunctionPass</tt></a>.  This is where we are supposed
 to do our thing, so we just print out our message with the name of each
 function.</p>
 
+<div class="doc_code"><pre>
+  const int Hello::ID = 0;
+</pre></div>
+
+<p> We initialize pass ID here. LLVM uses ID's address to identify pass so 
+initialization value is not important.</p>
+
 <div class="doc_code"><pre>
   RegisterPass&lt;Hello&gt; X("<i>hello</i>", "<i>Hello World Pass</i>");
 }  <i>// end of anonymous namespace</i>
@@ -295,6 +310,10 @@ argument "<tt>hello</tt>", and a name "<tt>Hello World Pass</tt>".</p>
 
 <b>namespace</b> {
   <b>struct Hello</b> : <b>public</b> <a href="#FunctionPass">FunctionPass</a> {
+    
+    static const int ID;
+    Hello() : FunctionPass((intptr_t)&ID) {}
+
     <b>virtual bool</b> <a href="#runOnFunction">runOnFunction</a>(Function &amp;F) {
       llvm::cerr &lt;&lt; "<i>Hello: </i>" &lt;&lt; F.getName() &lt;&lt; "\n";
       <b>return false</b>;