フラグの最適化

フラグ演算結果の参照回数を詳しくプリプロセスで解析するようにしたいです。
今は、参照0回と1回以上という区分で解析してました。それによって参照0回はコード生成しないようにしてるわけです。

これを細分化して、参照0回、参照1回、参照2回以上、という区分で解析できるようにします。

この情報を使って、フラグ演算をもっと最適化します。
参照0回は今まで通り、コード生成対象外です。
参照1回は、その参照している命令以外ではフラグ演算値を使わないということなので、フラグの変数に代入するのを止めて、命令コード中にフラグ演算を畳み込んでしまおうと思います。
参照2回については今まで通り、フラグ変数に演算値を代入する普通の処理にします。

ふつー、フラグレジスタの値を2回以上使い回すというのは出来ないことはないですが、出来る場面が限られます。
だいたいの場合は、フラグレジスタの値は1回使って終わりのはずです。なので、それを分岐命令とかに畳み込んでしまえば、見かけ上はフラグレジスタの変数が無くなったように見えるはずです。
それなりにコードサイズの低減と、速度向上に繋がると思います。