复制传播

在计算机科学中，复制传播（copy propagation）是一种编译器优化技术，在GCC、LLVM等大型编译器中均有使用此技术。

假设有一直接赋值语句（direct assignment）  ，则  是其赋值目标，  是这个赋值语句的值。那么复制传播便是将代码中所有出现的、能被替换的  ，统统直接替换成该语句的值  的一个过程。

在计算什么赋值目标能被安全地替换时，复制传播经常会使用到定义可达性、use-def链、def-use链这些算法。以  为例，如果  这个赋值目标在程序中的某个点  之前从未被重新赋值过，则在点  以前都可以安全地使用  替代  。

 范例 
对于以下代码：
    x = y
    z = 3 + x

经过复制传播转换后，会形成以下代码：
    z = 3 + y

可见原代码中多余的赋值操作已被复制传播消除。由于其它优化技术，如公共子表达式消除经常会产生这种类型的多余赋值操作，因此复制传播属于是一种尤为重要的“代码清理”优化。

 相关链接 
 复制省略
 常数折叠

 补充书目、地址与网址 
 Muchnick, Steven S. Advanced Compiler Design and Implementation. Morgan Kaufmann. 1997. 

 参考 

Category:編譯器最佳化