Удаление копий переменных
Для экономии памяти компиляторы обычно сокращают количество используемых переменных, выполняя алгебраический разворот выражений и удаляя лишние копии. В англоязычной литературе за данной техникой оптимизации закреплен термин "copy propagation", суть которого поясняется в следующем примере:
main(int n, char** v)
{
int a,b;
a
= n+1;
b
= 1-a; // избавляется от переменной a: (1 – (n + 1));
return a-b; // избавляется от переменной b: ((n + 1) – (1 – (n + 1)));
}