「ほっ」と。キャンペーン

素人プログラマーRYOの勉強日誌。


by R-STUDY

COINS・・・その2

COINSの機能

LIRでのSSA最適化機能には

LIRからSSA形式への変換3種類

最小SSAへの変換(ssa-opt=mini)
半ば刈り込んだSSAへの変換(ssa-opt=semi)
刈り込んだSSA への変換(ssa-opt=prun)
SSA形式からLIRへの逆変換4種類

Briggsの方法(ssa-opt=brig)
Sreedharの方法I(ssa-opt=srd1)
Sreedharの方法II(ssa-opt=srd2)
Sreedharの方法III(ssa-opt=srd3)
コピー伝播(ssa-opt=cpyp)
共通部分式削除(ssa-opt=cse)
条件分岐を考慮した定数畳み込みと定数伝播(ssa-opt=cstp)
無用命令削除(ssa-opt=dce)
複雑な演算の展開(代入の右辺の演算子は1つだけとする)(ssa-opt=divex)
ループ不変コードの巻き上げ(ssa-opt=hli)
演算の強さの軽減とテスト置換(ssa-opt=osr)
質問伝播による部分冗長性削除(ssa-opt=preqp)
などがある。SSA最適化を指定する場合は、最初にSSA形式への変換を1つ選んで指定し、最後にLIRへの逆変換を1つ選んで指定し、その間にいくつかの最適化機能を実施したい順番に並べれば良い。同じ最適化機能を何箇所かで指定しても良い。

COINSの概要

注目すべきは、無用命令の削除。
これを行うことで、アルゴリズムの類似性を計るに於いて、無駄なコードを削除できる。
また、変数の変化を追うことで、While文とfor文の違いを吸収してくれるか?

COINSでは、各ソース言語プログラムをHIRに変換するフロントエンド
HIRからLIRに変換するモジュールが用意されている。それを利用することで
プログラムコードをSSA形式に直すことが可能となるはず。

問題は、コードクローン発見の手法とどう違いを出すか?という部分。
アルゴリズムが同じとコードが同じは等しいようで違う。
同じアルゴリズムで違う書き方を考え、考察する必要がある。
[PR]
by R-STUDY | 2005-11-01 18:03 | 勉強メモ