我正在使用链接时优化( lto )和 O2 优化级别编译具有修改版 clang 的项目。 O0和O1表现不错,但遗憾的是O2 删除了一些函数。有没有办法告诉优化省略特定的功能?
我已尝试使用volatile
变量以及__attribute__ ((optimize("0")))
但未成功。
也欢迎直接在llvm IR级别提供的解决方案。
编辑:也许我应该更详细地解释一下这种情况。 修改后的clang添加了对与clang一起构建的自定义运行时库的调用。 其中一些插入的调用会被优化掉。
答案 0 :(得分:2)
我相信__attribute(used)__
(GCC)或llvm.used
(LLVM)是您正在寻找的。 p>
答案 1 :(得分:0)
添加__attribute__((noinline))
将使指定的功能不再消失。您也可以使用-fno-inline
全局阻止它。