|
|
1.1 ! root 1: #ifndef lint ! 2: static char sccsid[] = "@(#)2.main.c 4.1 (Berkeley) 2/11/83"; ! 3: #endif not lint ! 4: ! 5: #include <stdio.h> ! 6: #include "def.h" ! 7: #include "2.def.h" ! 8: ! 9: VERT *after; ! 10: int *ntobef, *ntoaft; ! 11: build() ! 12: { ! 13: VERT v, *dom, *head; ! 14: int type; ! 15: struct list **inarc; ! 16: dfs(START); ! 17: if (routerr) return; ! 18: for (v = 0; v < nodenum; ++v) ! 19: { ! 20: type = NTYPE(v); ! 21: if (type == LOOPVX || type == DOVX) ! 22: FATH(ARC(v,0)) = v; ! 23: } ! 24: ! 25: head = challoc(sizeof(*head) * nodenum); ! 26: if (progress) fprintf(stderr," gethead:\n"); ! 27: gethead(head); /* sets head[v] to ITERVX heading smallest loop containing v or UNDEFINED */ ! 28: ! 29: if (routerr) return; ! 30: inarc = challoc(nodenum * sizeof(*inarc)); ! 31: if (progress) fprintf(stderr," getinarc:\n"); ! 32: getinarc(inarc,head); /* sets inarc[v] to list of forward arcs entering v */ ! 33: ! 34: dom = challoc(nodenum * sizeof(*dom)); ! 35: if (progress) fprintf(stderr," getdom:\n"); ! 36: getdom(inarc,dom); /* sets dom[v] to immediate dominator of v or UNDEFINED */ ! 37: if (routerr) return; ! 38: if (progress) fprintf(stderr," gettree:\n"); ! 39: gettree(inarc, dom, head); ! 40: if (routerr) return; ! 41: ! 42: chfree(head, nodenum * sizeof(*head)); head = 0; ! 43: chfree(dom,nodenum * sizeof(*dom)); dom = 0; ! 44: for (v = 0; v < nodenum; ++v) ! 45: { ! 46: freelst(inarc[v]); ! 47: inarc[v] = 0; ! 48: } ! 49: chfree(inarc,sizeof(*inarc) * nodenum); inarc = 0; ! 50: chfree(ntoaft,sizeof(*ntoaft) * nodenum); ntoaft = 0; ! 51: chfree(ntobef,sizeof(*ntobef) * nodenum); ntobef = 0; ! 52: chfree(after, sizeof(*after) * accessnum); after = 0; ! 53: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.