英特尔c ++ - 优化器消息

时间:2013-05-05 17:09:29

标签: c gcc clang intel

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

float x =  1.0f/2;

将被评估为:

float x = 0.5f;

并且代码中没有分区(我知道在这种情况下它始终是真的,但这只是一个例子)。更高级的示例可以是循环展开或操作重新排序。 提前致谢。

3 个答案:

答案 0 :(得分:4)

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

您还可以指定opt报告文件。有关详细信息,请参阅here

答案 1 :(得分:1)

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

如果您想查看一些内部GCC表示,可以将-fdump-tree-all传递给GCC。请注意,您将获得数百个转储文件。

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

答案 2 :(得分:0)

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