writes into a temporary register because it was examined a second time for
writes to a dead register after a preceding instruction was deleted. I fixed
this by forcing a return after the first deletion. There are probably more
bugs like this lurking in bflow()...
SCCS-vsn: old/pcc/c2.tahoe/c21.c 1.6
-static char sccsid[] = "@(#)c21.c 1.5 (Berkeley/CCI) %G%";
+static char sccsid[] = "@(#)c21.c 1.6 (Berkeley/CCI) %G%";
if (tempreg(src,r2))
uses[r2]=uses[r], uses[r]=0;
redun3(p);
if (tempreg(src,r2))
uses[r2]=uses[r], uses[r]=0;
redun3(p);
- newcode(p); redunm++; flow=r;
+ newcode(p); redunm++;
+ return(p); /* avoid stale uses[] data */