clang,lto,防止功能移除

时间:2015-12-11 23:06:55

标签: c clang lto

我正在使用链接时优化( lto )和 O2 优化级别编译具有修改版 clang 的项目。 O0和O1表现不错,但遗憾的是O2 删除了一些函数。有没有办法告诉优化省略特定的功能? 我已尝试使用volatile变量以及__attribute__ ((optimize("0")))但未成功。

也欢迎直接在llvm IR级别提供的解决方案。

编辑:也许我应该更详细地解释一下这种情况。 修改后的clang添加了对与clang一起构建的自定义运行时库的调用。 其中一些插入的调用会被优化掉。

2 个答案:

答案 0 :(得分:2)

我相信__attribute(used)__(GCC)或llvm.used(LLVM)是您正在寻找的。

答案 1 :(得分:0)

添加__attribute__((noinline))将使指定的功能不再消失。您也可以使用-fno-inline全局阻止它。