2.dom.c
来自「unix v7是最后一个广泛发布的研究型UNIX版本」· C语言 代码 · 共 51 行
C
51 行
#include <stdio.h>#/*set dom[v] to immediate dominator of v, based on arcs as stored in inarcs(i.e. pretending the graph is reducible if it isn't).Algorithm is from Hecht and Ullman, Analysis of a simple algorithm for globalflow analysis problems, except bit vector operations replaced by searchthrough DOM to save quadratic blowup in space */#include "def.h"#include "2.def.h"getdom(inarc,dom)struct list **inarc;VERT *dom; { VERT v; int i; struct list *ls; for (v = 0; v < nodenum; ++v) dom[v] = UNDEFINED; for (i = 1; i < accessnum; ++i) { v = after[i]; for (ls = inarc[v]; ls; ls = ls->nxtlist) { ASSERT(ntoaft[ls->elt] < i,getdom); dom[v] = comdom(dom[v],ls->elt,dom); } } }comdom(u,v,dom) /* find closest common dominator of u,v */VERT u,v, *dom; { if (u == UNDEFINED) return(v); if (v == UNDEFINED) return(u); while(u != v) { ASSERT(u != UNDEFINED && v != UNDEFINED, comdom); if (ntoaft[u] < ntoaft[v]) v = dom[v]; else u = dom[u]; } return(u); }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?