この関連する質問を見つけました。
要約すると、コンパイラの最適化パスについて調べるには、次のようにします。
llvm-as < /dev/null | opt -O3 -disable-output -debug-pass=Arguments
Geoff Nixonの回答(+1)で指摘されているように、clang
さらにいくつかのより高いレベルの最適化を実行します。これは次の方法で取得できます。
echo 'int;' | clang -xc -O3 - -o /dev/null -\#\#\#
個々のパスのドキュメントはこちらから入手できます。
-O
次のような高レベルのフラグを変更した場合の効果を比較できます。
diff -wy --suppress-common-lines \
<(echo 'int;' | clang -xc - -o /dev/null -\#\#\# 2>&1 | tr " " "\n" | grep -v /tmp) \
<(echo 'int;' | clang -xc -O0 - -o /dev/null -\#\#\# 2>&1 | tr " " "\n" | grep -v /tmp)
# will tell you that -O0 is indeed the default.
バージョン6.0では、パスは次のとおりです。
バージョン3.8では、パスは次のとおりです。
----------
バージョン3.7では、パスは次のとおりです(上記のコマンドの解析出力)。
----------
バージョン3.6の場合、パスはGYUNGMINKIMの投稿に記載されているとおりです。
----------
バージョン3.5では、パスは次のとおりです(上記のコマンドの解析出力)。
----------
バージョン3.4では、パスは次のとおりです(上記のコマンドの解析出力)。
----------
バージョン3.2では、パスは次のとおりです(上記のコマンドの解析出力)。
-------------
編集 [2014年3月]リストから重複を削除しました。
編集 [2014年4月]ドキュメントリンクと3.4のオプションを追加
編集 [2014年9月] 3.5の追加オプション
[2015年12月] 3.7の追加オプションを編集し、3.6の既存の回答に言及します
編集 [2016年5月]オプションとclangの両方について、3.8の追加オプションを編集し、clangの既存の回答に言及します(optではなく)
編集 [2018年11月] 6.0のオプションを追加