[llvm-dev] Preventing function call from being optimized out in LTO

Shishir V Jessu via llvm-dev llvm-dev at lists.llvm.org
Tue Jun 9 11:01:15 PDT 2020


Hello,

I am adding function calls to an LLVM link-time optimization (LTO) pass,
using the IRBuilder::CreateCall method. I want these calls to remain in the
final x86 binary at any optimization level, but on levels -O2 and -O3, some
of these calls are being optimized out.

So far, I've tried adding each function in the program (excluding LLVM
intrinsics) to the llvm.used set, and I've also set noinline and optnone
attributes on each function in the program. This has allowed me to
retain *most,
*but not all, of the calls I've added with IRBuilder::CreateCall.

Furthermore, I have confirmed that all the calls I've created are present
in the LLVM IR that results immediately after my pass. Thus, I know some
future LTO pass is optimizing out some of these calls.

How can I ensure that none of the calls I add are optimized out? Thanks for
your help!

Best,
Shishir Jessu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200609/ae51a7d1/attachment.html>


More information about the llvm-dev mailing list