Use-Def Analysis and SSA (Static Single Assignment)
Use-Definition chains (ud chains)
Each use of a variable is linked to all assginments that reach it
Definition-Use chains (du chains)
Each assignment to a variable is linked to all uses of it
SSA (Static Single Assignment Form)
UD를 좀더 축약한 것이다.
Definition: each assignment to a variable is given a unique name
All of the uses reached by that assignment are renamed
Easy for straight-line code
What about control flow? ==> X nodes
Dominator
만약 어떤 노드 x가 Entry에서 y까지 가는 모든 path에 의해서 반드시 호출 되어지는 것이라면
그것을 우리는 y의 dominator x라고 부른다.
" x dominates y " means
x is always executed before y is executed
▶ 특성
- 모든 노들은 그것 스스로 dominate 하다.
- 만약, x가 y를 dominate하고, y가 z를 dominate 한다면, x는 z를 dominate 한다.
(transitivity 성질을 만족함)
- x y 둘다 z를 dominate 한다면,
Strictly dominating
x가 y의 strictly dominator 라고 한다면, x는 y를 domiante 한다 하지만 x는 y가 아니라는 것이다.
Dominance Frontiers
X 는 Y의 predecessor들중 한개를 dominate한다. 하지만, x는 y를 strictly dominate 하지 않아야 한다.]
그냥 dominate라고 보면, 자기 자신도 포함대므로, x=y를 허용하게 된다. 그러면 정의가 꼬인다.
DF(2) = {6} 이다.
풀어서 써보면,
2에 대한 Dominance Frontier를 구하는 것이다.
2는 2,3,4,5들을 dominate 한다.
'Computer Science > 고급 컴파일러' 카테고리의 다른 글
LLVM 8.0.0 소스코드를 빌드해서 설치하는 방법 (0) | 2019.08.07 |
---|---|
19) Loop Transformations (0) | 2014.12.10 |
18) Loops and Data Dependence (0) | 2014.12.10 |
Advanced Compilers Reuse Optimization (0) | 2014.12.03 |
Dataflow Analysis (0) | 2014.11.13 |