32.1.1 最適化オプションの種類
最適化用のオプションには次に示す-Optimize,0,-Optimize,1,-Optimize,2,-Optimize,3の4種類があり,省略時は-Optimize,1が仮定されます。
- 〈この項の構成〉
(3) -Optimize,2オプション
広域的な次の最適化をします。
-
命令レベルでの最適化(ピープホールによる不要命令の削除など)
-
不変式のループ外への移動
-
コピー伝播
-
定数の畳み込み
-
共通式の削除
-
演算の強さの軽減
-
そとPERFORM文のインライン展開
(5) 注意事項
-
最適化によって文または文の一部が移動または削除されると,実行時メッセージや異常終了時要約情報リストなどの行番号/欄の情報が正しく出力されないことがあります。
正しい行番号/欄の情報を出力するには,コンパイル時に-Optimize,0オプションを指定して最適化を抑止する必要があります。
-
-Optimize,3オプションを指定すると次のような副作用を伴うことがあります。
(例)
01 A PIC S9(9) VALUE +123456789. 01 B PIC S9(5). 01 C PIC S9(9). : PROCEDURE DIVISION. : MOVE A TO B. MOVE B TO C. DISPLAY C.
-Optimize,3指定以外のときはデータ項目Cに+56,789が設定されますが,-Optimize,3指定の場合,+123,456,789が設定されます(-DigitsTrunc指定ありの場合を除く)。
また,演算よりも10進項目への代入の方が多いプログラムなど,プログラムによっては-Optimize,3オプションを指定すると実行速度がかえって低下する場合があります。