Annotation of researchv10no/cmd/struct/2.main.c, revision 1.1

1.1     ! root        1: #include <stdio.h>
        !             2: #include "def.h"
        !             3: #include "2.def.h"
        !             4: 
        !             5: VERT *after;
        !             6: int *ntobef, *ntoaft;
        !             7: build()
        !             8:        {
        !             9:        VERT v, *dom, *head;
        !            10:        int type;
        !            11:        struct list **inarc;
        !            12:        dfs(START);
        !            13:        if (routerr) return;
        !            14:        for (v = 0; v < nodenum; ++v)
        !            15:                {
        !            16:                type = NTYPE(v);
        !            17:                if (type == LOOPVX || type == DOVX)
        !            18:                        FATH(ARC(v,0)) = v;
        !            19:                }
        !            20: 
        !            21:        head = challoc(sizeof(*head) * nodenum);
        !            22:        if (progress) fprintf(stderr,"  gethead:\n");
        !            23:        gethead(head);  /* sets head[v] to ITERVX heading smallest loop containing v or UNDEFINED */
        !            24: 
        !            25:        if (routerr) return;
        !            26:        inarc = challoc(nodenum * sizeof(*inarc));
        !            27:        if (progress) fprintf(stderr,"  getinarc:\n");
        !            28:        getinarc(inarc,head);           /* sets inarc[v] to list of forward arcs entering v */
        !            29: 
        !            30:        dom = challoc(nodenum * sizeof(*dom));
        !            31:        if (progress) fprintf(stderr,"  getdom:\n");
        !            32:        getdom(inarc,dom);      /* sets dom[v] to immediate dominator of v or UNDEFINED */
        !            33:        if (routerr) return;
        !            34:        if (progress) fprintf(stderr,"  gettree:\n");
        !            35:        gettree(inarc, dom, head);
        !            36:        if (routerr) return;
        !            37: 
        !            38:        chfree(head, nodenum * sizeof(*head)); head = 0;
        !            39:        chfree(dom,nodenum * sizeof(*dom)); dom = 0;
        !            40:        for (v = 0; v < nodenum; ++v)
        !            41:                {
        !            42:                freelst(inarc[v]);
        !            43:                inarc[v] = 0;
        !            44:                }
        !            45:        chfree(inarc,sizeof(*inarc) * nodenum); inarc = 0;
        !            46:        chfree(ntoaft,sizeof(*ntoaft) * nodenum); ntoaft = 0;
        !            47:        chfree(ntobef,sizeof(*ntobef) * nodenum); ntobef = 0;
        !            48:        chfree(after, sizeof(*after) * accessnum); after = 0;
        !            49:        }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.