32.2.4 コピー伝播
変数1=定数
変数1=変数2
このような単純な代入文があったとき,次の変数1への代入までに現れた変数1の参照を定数や変数2で置き換えることによって,定数の畳み込みや無用命令の削除(代入があり,次の代入または終わりまでに参照がない場合,その代入は無用である)などをします。ただし,-Optimize,2オプション指定時には,ユーザが定義したデータ項目への代入に対する無用命令の削除はしません。
次の例では,A,Bはユーザ定義変数ではないものとします。
定数"23"を代入しているAは1.,2.で参照されているだけなので,1.,2.のAはそれぞれ定数"23"に変更されます。さらに,Bは2.で参照されているだけなので,Bも定数"23"に変更されます。なお,この例では2.のCOMPUTE文が定数の演算だけになるため,定数の畳み込みによって最終的に定数"50"に変更されます。
- 最適化条件
-
次の条件を満たす代入X=Yによってだけコピー伝播は行われます。
-
Xは添字指定を含まない。
-
Xに対する別名はない。
-
Yが定数なら,YはXのデータの型およびサイズに変換できる。
-
Yが変数なら,YはXのデータの型およびサイズに等しい。
-