<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Dec 2, 2015 at 11:06 AM, David Chisnall <span dir="ltr"><<a href="mailto:David.Chisnall@cl.cam.ac.uk" target="_blank">David.Chisnall@cl.cam.ac.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 2 Dec 2015, at 19:00, Phil Tomson <<a href="mailto:phil.a.tomson@gmail.com">phil.a.tomson@gmail.com</a>> wrote:<br>
><br>
> I have a feeling this would get rather tricky given that there are several libraries linked in to the final executable as well. It would have to look something like:<br>
><br>
> clang -c file.c -emit-llvm > opt -... > llc ... > as > ld (libs to link in)<br>
<br>
</span>You don’t need as (llc can emit .o files). </blockquote><div><br></div><div>How do you get llc to emit a .o file (I seem to only be able to get it to output a .s file)?<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> Hopefully, your build system has different CC / CXX / LD values, so the final link is separate too.<br></blockquote><div><br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span class=""><br>
> Someone above mentioned modifying PassManagerBuilder and rebuilding clang - I'd guess there's a list of optimization passes performed somewhere that PassManagerBuilder references, but I haven't been in the optimization pass area of LLVM much yet. Any pointers on that approach?<br>
<br>
</span>You can take a look in BackendUtil.cpp for how the passes are constructed for clang.  Note that it is quite complex and depends a lot on your language options...<br>
<span class="HOEnZb"><font color="#888888"><br>
David<br>
<br>
</font></span></blockquote></div><br></div></div>