インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

Linux* および macOS* システムでの例外処理データの最適化

プログラムで例外処理をサポートする必要がある場合、コンパイラーは、例外を巻き戻してキャッチするため Linux* および macOS* ランタイムによって使用される DWARF ディレクティブを含む特別なセクションを作成します。

この情報は .eh_frame セクションにあり、以下のコンパイラー・オプションによりサイズを減らすことができます。

指定するオプション:

Linux* および macOS*: -fno-exceptions
  -fno-asynchronous-unwind-tables
Windows*: なし

メリット

  • これらのオプションは、オブジェクトまたはバイナリーファイルのサイズを最大 15% 削減する可能性があります。削減される量は、ターゲット・プラットフォームに依存します。

  • これらのオプションは、命令範囲または呼び出し範囲で巻き戻し情報が正確かどうか制御します。例えば、-fno-asynchronous-unwind-tables オプションは、例外のスローまたはキャッチのみを行うプログラムに使用できます。

デメリット

どちらのオプションもプログラムの動作を変更する可能性があります。

  • デストラクターを持つクラスのオブジェクトに対して標準の C++ 処理が必要なプログラムでは、-fno-exceptions オプションを使用しないでください。

  • 例外をスローする可能性があるほかの関数またはデストラクターを持つオブジェクトを宣言する C++ 関数への呼び出しを含む、-fexceptions オプションまたは -traceback オプションでコンパイルされた関数には、-fno-asynchronous-unwind-tables オプションを使用しないでください。

各ターゲット・プラットフォームのデフォルト値と動作については、コンパイラー・オプションの説明を参照してください。