Does seem useful in a few limited cases, one comment - you do know about llvm-extract right? I see this being useful when debugging cross module type of optimizations etc, but you can run most of a set of passes on a module with llvm-extract after you take the function out as well.<br><div><br></div><br><div class="gmail_quote">On Wed Nov 19 2014 at 5:39:43 PM Duncan P. N. Exon Smith <<a href="mailto:dexonsmith@apple.com">dexonsmith@apple.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
> On 2014-Nov-19, at 13:30, Gerolf Hoflehner <<a href="mailto:ghoflehner@apple.com" target="_blank">ghoflehner@apple.com</a>> wrote:<br>
><br>
> Hi dexonsmith, echristo,<br>
><br>
> Dumping the IR of an entire module can take a long time. I found a<br>
> patch I wrote a while back that allows me to dump the IR for one function.<br>
> It is not pretty but gets the job done. You might find it useful and/or have ideas<br>
> to improve it etc.<br>
><br>
> LTO usage example: -Wl,-mllvm,-dump-function=foo -Wl,-mllvm,-mdump-function=foo<br>
> -Wl,-mllvm,-print-before-all<br>
><br>
> <a href="http://reviews.llvm.org/D6326" target="_blank">http://reviews.llvm.org/D6326</a><br>
><br>
> Files:<br>
>  lib/Analysis/IPA/<u></u>CallGraphSCCPass.cpp<br>
>  lib/Analysis/LoopPass.cpp<br>
>  lib/CodeGen/MachineFunction.<u></u>cpp<br>
>  lib/CodeGen/<u></u>MachineFunctionPrinterPass.cpp<br>
>  lib/IR/IRPrintingPasses.cpp<br>
> <D6326.16397.patch><br>
<br>
This seems really useful.  A couple of things:<br>
<br>
  - You should add a testcase.  Looks like `-print-after-all` is tested<br>
    in test/Other.<br>
<br>
  - You should remove (and commit separately if at all) the whitespace<br>
    changes to code you didn't touch.<br>
<br>
I guess we could bikeshed on the option name, but -dump-function seems<br>
fine to me.</blockquote></div>