UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 19800

11.1 EDK - GNU GCC の最適化オプションについて

説明

GNU GCC の最適化オプションはそれぞれどのような設定なのですか。

ソリューション

GNU ウェブ サイトによると、最適化オプションの説明は次のようになっています。

-O
-O1

最適化を実行します。コンパイルを最適化するには比較的時間がかかり、大型ファンクションではメモリも多く必要です。

-O を使用しない場合、コンパイラの目的はコンパイルにかかるコストを削減し、デバッグで予想どおりの結果を得ることです。ステートメントはそれぞれ独立しています。 ステートメント間にブレークポイントを設定してプログラムを停止すると、変数に新しい値を指定したり、プログラム カウンタをそのファンクション内のステートメントのいずれかに変更し、ソース コードで予測したとおりの結果を得ることができます。

-O を使用しないと、レジスタとして宣言された変数のみがレジスタに割り当てられます。また、コンパイル済みのコードは、-O を使用せずに PCC で作成したものよりも落ちます。



-O を使用すると、コード サイズと実行時間を削減するようコンパイラが実行されます。このオプションを指定すると、すべてのマシンで -fthread-jumps と -fdefer-pop がオンになり、遅延スロットのあるマシンで -fdelayed-branch がオンになり、フレーム ポインタがなくてもデバッグをサポートできるマシンで -fomit-frame-pointer がオンになります。一部のマシンでは、ほかのオプションもオンになります。

-O2

-O よりも最適化のレベルが上がります。エリアとスピードのトレードオフが関係しないすべての最適化が実行されます。-O2 を使用すると、コンパイラでループ展開または関数のインラインは実行されません。-O を使用した場合よりも、生成されたコードのコンパイル時間とパフォーマンスの両方が向上します。

-O2 を使用すると、ループ展開、関数のインライン、および厳密なエイリアシング最適化以外のすべての最適化がオンに設定されます。また、すべてのマシンで -fforce-mem オプションがオンになり、フレーム ポインタが削除されてもデバッグに影響しないマシンでフレーム ポインタが削除されます。

-O3

-O2 よりもさらに最適化のレベルが上がります。-O3 を使用すると、-O2 で実行される最適化がすべてと、inline-functions オプションがオンになります。

-O0
最適化は実行されません。

-Os
コード サイズの削減を優先して最適化が実行されます。-Os を使用すると、コード サイズを増加しない -O2 の最適化がすべてオンになります。また、コード サイズを削減するその他の最適化も実行されます。

複数の -O オプションを使用した場合は、最後のオプションが適用されます。

詳細はこちらを参照してください。http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
AR# 19800
日付 02/13/2013
ステータス アクティブ
種類 一般
ツール
  • EDK - 13.3
このページをブックマークに追加