<div dir="ltr">Hi<div><br></div><div>I want to get the address of basic block in llvm ir ,</div><div><br></div><div>so I use and BlockAddress,</div><div><br></div><div>and then use GlobalVariable 's setInitializer to pass it to my own program.</div><div><br></div><div>but I found that BlockAddress sometime would be wrong.</div><div><br></div><div>Because code gen (llvm backend) is free to insert instructions in to bb,</div><div><br></div><div>like "mov rax" or "add rsp".</div><div><br></div><div>and even change the order of basic block .</div><div><br></div><div>like this:</div><div><br></div><div>[llvm-dev] Is BlockAddress always correct ?<br></div><div><a href="http://lists.llvm.org/pipermail/llvm-dev/2020-February/139563.html">http://lists.llvm.org/pipermail/llvm-dev/2020-February/139563.html</a> </div><div> <a href="http://lists.llvm.org/pipermail/llvm-dev/2020-February/139571.html">http://lists.llvm.org/pipermail/llvm-dev/2020-February/139571.html</a><br></div><div><br></div><div>Then, I study some discussion in llvm-dev</div><div><br></div><div>[llvm-dev] Figuring out return address of a call<br></div><div><a href="http://lists.llvm.org/pipermail/llvm-dev/2017-March/110719.html">http://lists.llvm.org/pipermail/llvm-dev/2017-March/110719.html</a> </div><div><a href="http://lists.llvm.org/pipermail/llvm-dev/2017-March/110721.html">http://lists.llvm.org/pipermail/llvm-dev/2017-March/110721.html</a> <br></div><div><br></div><div>[llvm-dev] Stackmap question<br></div><div><a href="http://lists.llvm.org/pipermail/llvm-dev/2016-December/107713.html">http://lists.llvm.org/pipermail/llvm-dev/2016-December/107713.html</a>  <br></div><div><br></div><div>I also study the shadow stack paper in SP'19, but it is purely in llvm backend , right ?</div><div><br></div><div>After survey, I found that BlockAddress and patchpoint/stack map both can't exactly get the address of basic block , especially the basic block is before a call instruction.</div><div><br></div><div>Have you solved this problem?</div><div>Or get the address of basic block in other way ?</div><div><br></div><div>Thank you ~</div><div><br></div></div>