稀疏有條件的常數傳播

在電腦科學的領域,稀疏有條件的常數傳播(sparse conditional constant propagation)是一個优化的技術,常用在以静态单赋值形式(SSA)進行最佳化的編譯器,它可以移除程式中一些無用的程式碼以及進行常數傳播。然而,它比起死碼刪除以及常數傳播更加的強大。[1][2]

這個演算法在SSA中藉由實現程式碼的抽象释义來運作。在實現抽象釋義的過程中,它使用常數的(Lattice)以及在全域環境對應SSA變數到這個格的數值,演算法的關鍵在於它如何處理分支指令的詮釋,當意外發生,分支的狀態盡可能評估最佳的方式,使綁定變數的抽象數值更加的精確。在需要數值要絕對精確的案例之下,抽象執行可以決定分支的方向。如果數值不是常數,或是一個變數在為定義的狀態,那麼兩個分支的方向必須都保留。

完成後的抽象表現,指令不會到達被標注為死碼的程式區段,SSA變數在常數會使用到的地方可能會以內連(inline)的方式實現。[比如?]

參考文獻

  1. ^ Wegman, Mark N. and Zadeck, F. Kenneth. "Constant Propagation with Conditional Branches." ACM Transactions on Programming Languages and Systems, 13(2), April 1991, pages 181-210.
  2. ^ Click, Clifford and Cooper, Keith. "Combining Analyses, Combining Optimizations", ACM Transactions on Programming Languages and Systems, 17(2), March 1995, pages 181-196

另見

  • Cooper, Keith D. and Torczon, Linda. Engineering a Compiler. Morgan Kaufmann. 2005.