Help us understand the problem. What is going on with this article?

C/C++ コンパイラの最適化オプションの具体的な中身

(この記事は私の blog の http://umezawa.dyndns.info/wordpress/?p=7429 の転載です)

GCC なり Clang なり MSVC なりを使う場合、普通は最適化オプションとしては -O2 などとだけ指定します。実際にはこの -O2 はいろいろな最適化手法の集合を有効化するオプションなのですが、じゃあその集合を知りたくなったらどうしましょう、というのがこの記事のお話です。

MSVC (Visual C++) の場合

MSVC の場合は MSDN のオプションの説明のページにそのものズバリ書いてあります。後述の GCC や Clang と比べると MSVC は最適化オプションの粒度が粗いことが分かります。

GCC の場合

オンラインマニュアルを見ると書いてあります。

手元のバージョンの GCC について調べたい場合は、

gcc -Q -O2 --help=optimizers

などとすると具体的な設定が表示されます。

Clang の場合

Clang の場合はサクッと見つけられなかった(マニュアルとか見てもそれぞれのオプションがどういう位置づけなのかしか書いてない)のですが、Stack Overflow にそういう質問があるということを教えてもらいました

# LLVM レベルのオプションを知りたい場合
llvm-as < /dev/null | opt -O2 -disable-output -debug-pass=Arguments

# Clang が独自に追加するオプションを知りたい場合
echo 'int;' | clang -xc -O2 - -o /dev/null -\#\#\#

出力が読みづらいのが難点です。

umezawatakeshi
AVX-512 が実装されたパフォーマンスデスクトップ向けプロセッサを待ち続けて早幾年月
http://umezawa.dyndns.info/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした