<div dir="ltr">Is LLVMTargetMachine::addPassesToEmitFile() in lib/CodeGen/LLVMTargetMachine.cpp before the AsmPrinter pass late enough for your pass?</div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Apr 25, 2015 at 5:50 AM, Rubens Emilio <span dir="ltr"><<a href="mailto:rubenseam@gmail.com" target="_blank">rubenseam@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>I'm trying to build an analysis pass over LLVM target-independent machine code.<br>However, I need the machine code to be "as close to its future target-specific code<br>as possible". As far as I understand the LLVM backend infrastructure,<br>the following applies:<br><br>- the LLVM IR abstracts the input code, allowing for many analysis and optimization<br>  passes to take place;<br>- after that, a series of passes converts the IR representation into other temporary<br>  structures, by taking target-specific decisions;<br>- finally, at the very beginning of code emission, there are MachineFunctions,<br>  i.e., CFGs composed of MachineBasicBlocks (sequences of MachineInstrs);<br>- during code emission, MachineInstrs are converted into MCInsts, which are later<br>  emitted as either target-specific assembly or binary object.<br><br>Since my goal is to deal with target-independent code, I must not write a pass<br>to be executed by a single target-specific module. Yet, I have not found how to<br>properly add a pass just before code emission.<br><br>As a workaround, I've added a stub in file:<br><br>    ~/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cppAsmPrinter.cpp<br><br>to call my analysis method over MachineFunctions. Despite the fact that it does work,<br>I'd like to know if is there any elegant/correct way to do such analysis.<br><br>Notice my pass simply analyzes such structures, thus not modifying any of them.<br>Also, it simply works because every target-specific code-emission module inherits<br>from LLMV::AsmPrinter, which means I have my analysis called upon<br>any target-specific compilation (with llc -march=... input.bc).<br><br>Any ideas/suggestions on how to implement such analysis without resorting<br>to adding stubs/function calls on the AsmPrinter?<br><br><br></div>Regards!<br></div>
<br>_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
<br></blockquote></div><br></div>