En la teoría de compiladores , la propagación de copias es el proceso de reemplazar las ocurrencias de los destinos de las asignaciones directas con sus valores. [ 1 ] Una asignación directa es una instrucción de la forma x = y, que simplemente asigna el valor de ya x.
Del siguiente código:
y = x z = 3 + y
La propagación de copias produciría:
z = 3 + x
La propagación de copias suele utilizar definiciones de alcance y cadenas de definición-uso para calcular qué instancias del objetivo pueden reemplazarse de forma segura. Si todos los usos del objetivo expuestos hacia arriba pueden modificarse de forma segura, la operación de asignación puede eliminarse.
La propagación de copias es una útil optimización de "limpieza" que se utiliza con frecuencia después de que se hayan ejecutado otras pasadas del compilador. Algunas optimizaciones, como las implementaciones clásicas de eliminación de subexpresiones comunes [ 1 ] , requieren que la propagación de copias se ejecute posteriormente para lograr un aumento de la eficiencia.
Véase también
Referencias
Lecturas adicionales
Muchnick, Steven S. Diseño e implementación de compiladores avanzados . Morgan Kaufmann. 1997.
- Optimizaciones del compilador