浏览代码

Simplify fillpreds()

Now that b->pred is a vector we do can remove the counting pass.
Roland Paterson-Jones 1 年之前
父节点
当前提交
ecfdac4f00
共有 1 个文件被更改,包括 3 次插入11 次删除
  1. 3 11
      cfg.c

+ 3 - 11
cfg.c

@@ -45,12 +45,12 @@ edgedel(Blk *bs, Blk **pbd)
 static void
 addpred(Blk *bp, Blk *bc)
 {
+	++bc->npred;
 	if (bc->pred)
 		vgrow(&bc->pred, bc->npred);
 	else
 		bc->pred = vnew(bc->npred, sizeof bc->pred[0], PFn);
-	assert(bc->visit < bc->npred);
-	bc->pred[bc->visit++] = bp;
+	bc->pred[bc->npred-1] = bp;
 }
 
 /* fill predecessors information in blocks */
@@ -59,16 +59,8 @@ fillpreds(Fn *f)
 {
 	Blk *b;
 
-	for (b=f->start; b; b=b->link) {
+	for (b=f->start; b; b=b->link)
 		b->npred = 0;
-		b->visit = 0;
-	}
-	for (b=f->start; b; b=b->link) {
-		if (b->s1)
-			b->s1->npred++;
-		if (b->s2 && b->s2 != b->s1)
-			b->s2->npred++;
-	}
 	for (b=f->start; b; b=b->link) {
 		if (b->s1)
 			addpred(b, b->s1);