SSA架構下的最佳化 n SSA Form下應關心的Data Structure ¡ Statements n ¡ Variables n ¡ 這條statement所在的basic block,它的前一條以及後一條 Statement,該statement所use的變數以及define的變數…等。 變數的定值點(唯一,因為是ssa架構) 以及使用點list。 Basic Blocks n n 一個BB包含statement list,predecessor list和一個successor( 條件分支結尾則不只一個) 。 Predecessor的順序對該BB中的phi函式定義非常重要。
Control-Dependence n Node y control-dependent node x ¡ x 定義 n n n v u n y exit X可走到u或v V要有到exit一定要經過y U要走到exit則有一條可不用經過y Function的return就算是exit
Control-Dependence Graph n If y control-dependent x in CFG, then there is an edge x y in it’s CDG. n If every path from v to exit pass through y, we say that y is a post-dominator of v. i. e. , y is a dominator of v in reverse control-flow graph
Create CDG r n (a) CFG ¡ 1 ¡ ¡ 2 3 5 4 6 7 exit New entry node r New edge r to s New edge r to exit
Create CDG r n 1 2 3 5 4 6 7 exit (b) reverse control-flow graph.
Create CDG 5 3 n DFG’ (n) ====== r {} 1 {r} 2 {2, r} 3 {2} 4 {r} 5 {3} 6 {3} 7 {2} 6 7 1 2 4 r exit n (c) post-dominator tree n (d) post dominance frontier
Create CDG n r (e) CDG ¡ 2 3 5 1 7 6 4 If x DFG’ [n], then there is an edge x y in CDG
Aggressive DCE n Algorithm ¡ ¡ 將所有的statement預設為dead 將以下statement標記為live n n n ¡ I/O,暫存器的儲存,函數return,呼叫另一個可能有 side effect的函數之statement 對其他的live statement所使用之變數做define的 statement 是一個condition statement,而且其他live的 statement control-dependent此condition statement dead之statement,將之刪除
Aggressive DCE 1 1 2 5 2 K 2 φ(k 3, 0) If k 2 < 100 4 5 K 3 K 2 + 1 n SSA Form 4 Return 1 exit n post-dominator tree
Aggressive DCE n DFG’ (n) ====== 1 {} 2 {2} 4 {} 5 {2} enter 2 5 n post dominance frontier n CDG 1 4
Aggressive DCE n n BB 4包含了return所以是live 並沒有live的BB control-dependent於BB 2 沒有live的assign statement dependent on k 2, k 3 所以除了BB 4以外 沒有其他live的BB或是 2 statement了 4 Return 1