📄 2.dom.c
字号:
#ifndef lintstatic char sccsid[] = "@(#)2.dom.c 4.1 (Berkeley) 2/11/83";#endif not lint#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -