Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@umezawatakeshi

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

More than 1 year has passed since last update.

(この記事は私の 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 -\#\#\#

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

0
Help us understand the problem. What is going on with this article?
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
umezawatakeshi
AVX-512 が実装されたパフォーマンスデスクトップ向けプロセッサを待ち続けて早幾年月

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?