稀疏有条件的常数传播
在电脑科学的领域,稀疏有条件的常数传播(sparse conditional constant propagation)是一个优化的技术,常用在以静态单赋值形式(SSA)进行最佳化的编译器,它可以移除程式中一些无用的程式码以及进行常数传播。然而,它比起死码删除以及常数传播更加的强大。[1][2]
这个演算法在SSA中借由实现程式码的抽象释义来运作。在实现抽象释义的过程中,它使用常数的格(Lattice)以及在全域环境对应SSA变数到这个格的数值,演算法的关键在于它如何处理分支指令的诠释,当意外发生,分支的状态尽可能评估最佳的方式,使绑定变数的抽象数值更加的精确。在需要数值要绝对精确的案例之下,抽象执行可以决定分支的方向。如果数值不是常数,或是一个变数在为定义的状态,那么两个分支的方向必须都保留。
完成后的抽象表现,指令不会到达被标注为死码的程式区段,SSA变数在常数会使用到的地方可能会以内连(inline)的方式实现。[比如?]
参考文献
- ^ 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.
- ^ 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.