2

Intel 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 表現の一部を見たい場合は、GCC に渡すことができます-fdump-tree-all。何百ものダンプファイルが得られることに注意してください。

MELT プローブを使用することもできます。MELT は GCC を拡張するためのドメイン固有言語 (およびプラグイン実装) であり、内部 (特に Gimple) 表現の一部をインタラクティブに表示するプローブ モードがあります。

于 2013-05-06T07:08:16.087 に答える
0

投稿の上部で説明している最適化は、(やや奇妙なことに) icc -fno-prec-div (オーバーライドしている可能性のあるデフォルト) の一部です。

于 2016-02-10T00:15:38.167 に答える