diff options
Diffstat (limited to 'docs/WritingAnLLVMPass.html')
-rw-r--r-- | docs/WritingAnLLVMPass.html | 27 |
1 files changed, 11 insertions, 16 deletions
diff --git a/docs/WritingAnLLVMPass.html b/docs/WritingAnLLVMPass.html index e353c2e94e4c..94c5cebed2ab 100644 --- a/docs/WritingAnLLVMPass.html +++ b/docs/WritingAnLLVMPass.html @@ -189,18 +189,13 @@ LIBRARYNAME = Hello # dlopen/dlsym on the resulting library. LOADABLE_MODULE = 1 -# Tell the build system which LLVM libraries your pass needs. You'll probably -# need at least LLVMSystem.a, LLVMSupport.a, LLVMCore.a but possibly several -# others too. -LLVMLIBS = LLVMCore.a LLVMSupport.a LLVMSystem.a - # Include the makefile implementation stuff include $(LEVEL)/Makefile.common </pre></div> <p>This makefile specifies that all of the <tt>.cpp</tt> files in the current directory are to be compiled and linked together into a -<tt>Debug/lib/Hello.so</tt> shared object that can be dynamically loaded by +<tt>Debug+Asserts/lib/Hello.so</tt> shared object that can be dynamically loaded by the <tt>opt</tt> or <tt>bugpoint</tt> tools via their <tt>-load</tt> options. If your operating system uses a suffix other than .so (such as windows or Mac OS/X), the appropriate extension will be used.</p> @@ -337,7 +332,7 @@ is supplied as fourth argument. </p> <p>Now that it's all together, compile the file with a simple "<tt>gmake</tt>" command in the local directory and you should get a new -"<tt>Debug/lib/Hello.so</tt> file. Note that everything in this file is +"<tt>Debug+Asserts/lib/Hello.so</tt> file. Note that everything in this file is contained in an anonymous namespace: this reflects the fact that passes are self contained units that do not need external interfaces (although they can have them) to be useful.</p> @@ -363,7 +358,7 @@ through our transformation like this (or course, any bitcode file will work):</p> <div class="doc_code"><pre> -$ opt -load ../../../Debug/lib/Hello.so -hello < hello.bc > /dev/null +$ opt -load ../../../Debug+Asserts/lib/Hello.so -hello < hello.bc > /dev/null Hello: __main Hello: puts Hello: main @@ -380,7 +375,7 @@ interesting way, we just throw away the result of <tt>opt</tt> (sending it to <tt>opt</tt> with the <tt>-help</tt> option:</p> <div class="doc_code"><pre> -$ opt -load ../../../Debug/lib/Hello.so -help +$ opt -load ../../../Debug+Asserts/lib/Hello.so -help OVERVIEW: llvm .bc -> .bc modular optimizer USAGE: opt [options] <input bitcode> @@ -408,7 +403,7 @@ the execution time of your pass along with the other passes you queue up. For example:</p> <div class="doc_code"><pre> -$ opt -load ../../../Debug/lib/Hello.so -hello -time-passes < hello.bc > /dev/null +$ opt -load ../../../Debug+Asserts/lib/Hello.so -hello -time-passes < hello.bc > /dev/null Hello: __main Hello: puts Hello: main @@ -1423,7 +1418,7 @@ how our <a href="#basiccode">Hello World</a> pass interacts with other passes. Lets try it out with the <tt>gcse</tt> and <tt>licm</tt> passes:</p> <div class="doc_code"><pre> -$ opt -load ../../../Debug/lib/Hello.so -gcse -licm --debug-pass=Structure < hello.bc > /dev/null +$ opt -load ../../../Debug+Asserts/lib/Hello.so -gcse -licm --debug-pass=Structure < hello.bc > /dev/null Module Pass Manager Function Pass Manager Dominator Set Construction @@ -1460,7 +1455,7 @@ passes.</p> World</a> pass in between the two passes:</p> <div class="doc_code"><pre> -$ opt -load ../../../Debug/lib/Hello.so -gcse -hello -licm --debug-pass=Structure < hello.bc > /dev/null +$ opt -load ../../../Debug+Asserts/lib/Hello.so -gcse -hello -licm --debug-pass=Structure < hello.bc > /dev/null Module Pass Manager Function Pass Manager Dominator Set Construction @@ -1501,7 +1496,7 @@ href="#getAnalysisUsage"><tt>getAnalysisUsage</tt></a> method to our pass:</p> <p>Now when we run our pass, we get this output:</p> <div class="doc_code"><pre> -$ opt -load ../../../Debug/lib/Hello.so -gcse -hello -licm --debug-pass=Structure < hello.bc > /dev/null +$ opt -load ../../../Debug+Asserts/lib/Hello.so -gcse -hello -licm --debug-pass=Structure < hello.bc > /dev/null Pass Arguments: -gcse -hello -licm Module Pass Manager Function Pass Manager @@ -1742,8 +1737,8 @@ want:</p> <div class="doc_code"><pre> (gdb) <b>break llvm::PassManager::run</b> Breakpoint 1 at 0x2413bc: file Pass.cpp, line 70. -(gdb) <b>run test.bc -load $(LLVMTOP)/llvm/Debug/lib/[libname].so -[passoption]</b> -Starting program: opt test.bc -load $(LLVMTOP)/llvm/Debug/lib/[libname].so -[passoption] +(gdb) <b>run test.bc -load $(LLVMTOP)/llvm/Debug+Asserts/lib/[libname].so -[passoption]</b> +Starting program: opt test.bc -load $(LLVMTOP)/llvm/Debug+Asserts/lib/[libname].so -[passoption] Breakpoint 1, PassManager::run (this=0xffbef174, M=@0x70b298) at Pass.cpp:70 70 bool PassManager::run(Module &M) { return PM->run(M); } (gdb) @@ -1835,7 +1830,7 @@ Despite that, we have kept the LLVM passes SMP ready, and you should too.</p> <a href="mailto:sabre@nondot.org">Chris Lattner</a><br> <a href="http://llvm.org">The LLVM Compiler Infrastructure</a><br> - Last modified: $Date: 2010-05-07 02:28:04 +0200 (Fri, 07 May 2010) $ + Last modified: $Date: 2010-07-08 10:27:18 +0200 (Thu, 08 Jul 2010) $ </address> </body> |