Gcc 的
-fdump-tree-optimized
选项将 C 代码的优化版本转储为 C 文件。有没有办法可以使用英特尔的 icc 编译器执行相同的操作?
我有一个矩阵乘法代码,我已将其编译为
icc -O3 -ipo mult.c
。我想查看编译器如何执行优化。如果没有任何效果,那么我将生成该程序的汇编代码。
从技术上讲,
-fdump-tree-optimized
不会转储 C 表示,而是 GCC 内部使用的 Gimple 代码的文本部分表示(Gimple 是指令的中端内部表示,大多数 GCC 目标无关的优化过程都在其上运行)。
但是
icc
是一个专有编译器(黑匣子),因此从其提供商的角度来看,(对于英特尔而言)展示 icc
的工作原理并不有趣。
GCC有能力显示其内部表示,因为它是一个免费软件。专有编译器不想展示它们是如何工作的。
如果这是一门课程,您也许也可以尝试 LLVM。 (但我不知道如何转储内部表示)。
更重要的是,如果这是一门课程,您可能会建议您的学生使用 GCC 4.6 开发插件或 GCC MELT 扩展来探索和实验优化。 MELT 是一种用于扩展 GCC 的高级领域特定语言,它提供了许多功能来简化此类任务。