如何禁用 LLVM 中的优化

Posted

技术标签:

【中文标题】如何禁用 LLVM 中的优化【英文标题】:How to disable an optimization in LLVM 【发布时间】:2012-07-31 20:20:42 【问题描述】:

我正在使用带有 -O4 优化的 clang 编译代码。但是,我想禁用函数的内联。我有自己的 LLVM 通行证,可以将一些代码注入到生成的代码中。通过后,我想启用函数的内联。我该怎么做。

【问题讨论】:

您不能确保您的通行证是第一批优化通行证之一吗? IE。确保它在 函数内联传递之前运行? 【参考方案1】:

您可以使用 opt which says 它可以以任何顺序运行通行证。

clang -c main.cpp -O0 -emit-llvm | opt -load yourplugin -yourpass -inline

【讨论】:

【参考方案2】:

如果您正在破解 clang,您可以在文件 clang/lib/CodeGen/BackendUtil.cpp 中更改通行证顺序。您应该在方法 CreatePasses() 内联之前插入您的通行证。

【讨论】:

以上是关于如何禁用 LLVM 中的优化的主要内容,如果未能解决你的问题,请参考以下文章

如何正确禁用包括按clang格式排序?

禁用 Chrome 的流量保护程序优化

使用 LLVM/Clang 忽略特定文件中的所有警告

禁用 GCC 中的所有优化选项

NHibernate 2.1.2 - 如何禁用反射优化器

禁用 Spring Boot/Cloud 中的功能