<div dir="ltr"><div><div><div>Hi,<br><br></div>I was trying to write a sample optimization pass in LLVM, by following instructions in LLVM doc for Writing a New Pass. But then ran into <i>make</i> issues. The issue is with having separate <i>source </i>and <i>build</i> directories. The LLVM doc for 'Getting Started' suggests keeping the two separate, but the 'Writing a new pass' doc assumes they are merged. Hence the <i>make </i>issue.<br>

<br>I did a bit of googling and could not find a desired solution. The solutions proposed were to combine the <i>source</i> and <i>build</i> directories. <br><br></div>I am happy to say that I could find a solution with keeping <i>source </i>and <i>build </i>directories separate, as desired. I thought I could share it with newbies like me. <br>

<br></div>  0. Download LLVM source into /llvm-src and build it into /llvm-build directories.<br clear="all"><div><div><div><div>  1. Write a new pass and Makefile as mentioned in LLVM doc 'Writing a new pass'. Assume it is created in /llvm-src/lib/Transforms/NewPass directory.<br>

</div><div>  2. Modify the Makefile in /llvm-src/lib/Transforms directory by adding NewPass under PARALLEL_DIRS.<br></div><div>  3. <i>make</i> in /llvm-build directory.<br></div><div>  4. Thats it. If things go fine, newpass.so will be created in /llvm-build/Debug+Asserts/lib directory.<br>

</div><div>  5. The new pass can be loaded by modifying the command mentioned in the LLVM doc (for Writing a new pass) as<br> <br><pre>opt -load /llvm-build/Debug+Asserts/lib/newpass.so -newpass < hello.bc > /dev/null</pre>

</div><div>Hope this helps.<br><br></div><div>-- <br>Rekha
</div></div></div></div></div>