我正在编译一个使用链接时间优化(lto)和O2优化级别的修改过的版本的项目。O0和O1做得很好,但遗憾的是,O2 删除了对函数的一些调用。有没有办法告诉优化忽略特定的函数?我已经尝试过使用volatile变量以及__attribute__ ((optimize("0"))),但没有成功。
解决方案,只有在llvm水平直接可用也是欢迎的。
编辑:也许我应该更详细地解释一下情况。修改后的clang添加对自定义运行库的调用,该库与clang一起构建。其中一些插入的调用被优化掉了。
发布于 2017-02-21 01:05:17
我相信__attribute(used)__ (GCC)或llvm.used是你要找的。
发布于 2015-12-11 23:17:44
添加__attribute__((noinline))将防止指定的函数消失。您还可以使用-fno-inline在全球范围内防止这种情况。
https://stackoverflow.com/questions/34234029
复制相似问题