If a temporary is assigned exactly once (most are), there is no need to do any work to put it in ssa form. On an input file of ~35k loc, this makes the processing time go from 2.9 secs to 1.2 secs.
@@ -125,6 +125,8 @@ phiins(Fn *fn)
fn->tmp[t].visit = 0;
if (fn->tmp[t].phi != 0)
continue;
+ if (fn->tmp[t].ndef == 1)
+ continue;
bszero(u);
k = -1;
bp = be;
@@ -140,10 +142,7 @@ phiins(Fn *fn)
}
if (req(i->to, TMP(t))) {
if (!bshas(b->out, t)) {
- if (fn->tmp[t].ndef == 1)
- r = TMP(t);
- else
- r = refindex(t, fn);
+ r = refindex(t, fn);
i->to = r;
} else {
if (!bshas(u, b->id)) {