<div dir="ltr">Hi Tim,<div>Thanks for the nice answer. The code that you mentioned, seems to generate the IR. You mean I should reuse the code to extract and output the register names in a file. Next, I should postprocess the file in my own pass?</div><div>Regards.</div></div><br><div class="gmail_quote"><div dir="ltr">On Mon, 12 Nov 2018 at 13:09, Tim Northover <<a href="mailto:t.p.northover@gmail.com">t.p.northover@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Ahmad,<br>
<br>
On Sun, 11 Nov 2018 at 13:39, Ahmad Nouralizadeh Khorrami via llvm-dev<br>
<<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br>
> I want to do a cutomized points-to analysis on IR. Suppose that we have:<br>
> %91 = bitcast i8* %90 to %struct.demux_packet*, !dbg !2688<br>
><br>
> I want to store sth similar to %91 -> target of %90, which records the target of pointer named %91. How can I access the names (Here, %90 and %91)?<br>
<br>
Unfortunately it's not trivial. You can see the logic used in<br>
AssemblyWriter::printInstruction (in lib/IR/AsmWriter.cpp).<br>
<br>
It boils down to using Instruction::getName if it exists, otherwise<br>
there's a special class called ModuleSlotTracker (the "Machine"<br>
instance in that function) that gives each unnamed value a number.<br>
You'd have to create one of those yourself; I had a quick look at the<br>
header and it actually seems pretty easy to use, which was a pleasant<br>
surprise.<br>
<br>
Cheers.<br>
<br>
Tim.<br>
</blockquote></div>