2

我想知道是否可以让英特尔 C++ 编译器(或其他编译器,如 gcc 或 clang)显示来自优化器的一些消息。我想知道优化器对我的代码做了什么。默认情况下,编译器只打印非常基本的东西,比如未使用的变量。非常简单的例子——我想知道那个表达式;

float x =  1.0f/2;

将被评估为:

float x = 0.5f;

并且代码中不会有划分(我知道在这种情况下它总是正确的,但这只是一个例子)。更高级的示例可能是循环展开或操作重新排序。提前致谢。

4

3 回答 3

4

对于 icc 和 icpc,您可以使用-opt-report -opt-report-level max标志集。

您还可以指定一个 opt-report 文件。请参阅此处了解更多详细信息

于 2013-05-05T17:25:45.153 回答
1

优化编译器(如 GCC,当被要求使用-O1-O2等进行优化时)本质上是在转换源代码的内部表示。

如果您想查看一些内部 GCC 表示,您可以传递-fdump-tree-all给 GCC。当心,你会得到数百个转储文件。

您还可以使用MELT 探针:MELT 是一种特定于域的语言(和插件实现)来扩展 GCC,它具有探针模式以交互地显示一些内部(特别是 Gimple)表示。

于 2013-05-06T07:08:16.087 回答
0

您在帖子顶部描述的优化(有点奇怪)是 icc -fno-prec-div 的一部分(这是您可能会覆盖的默认值)。

于 2016-02-10T00:15:38.167 回答