Explorar el Código

skip deleted phis in use width scan

Quentin Carbonneaux hace 6 meses
padre
commit
120f316162
Se han modificado 1 ficheros con 7 adiciones y 1 borrados
  1. 7 1
      copy.c

+ 7 - 1
copy.c

@@ -60,7 +60,13 @@ usewidthle(Fn *fn, Ref r, int w)
 		switch (u->type) {
 		case UPhi:
 			p = u->u.phi;
-			if (p->visit)
+			/* during gvn, phi nodes may be
+			 * replaced by other temps; in
+			 * this case, the replaced phi
+			 * uses are added to the
+			 * replacement temp uses and
+			 * Phi.to is set to R */
+			if (p->visit || req(p->to, R))
 				continue;
 			p->visit = 1;
 			b = usewidthle(fn, p->to, w);