Explorar o código

skip expensive ssa-building loop when possible

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.
Quentin Carbonneaux %!s(int64=6) %!d(string=hai) anos
pai
achega
a85fe6e2d9
Modificáronse 1 ficheiros con 3 adicións e 4 borrados
  1. 3 4
      ssa.c

+ 3 - 4
ssa.c

@@ -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)) {