9.1优化的主要种类 公共子表达式删除、复写传播、删除死代码 Bo x=ai;ai=anan=x; 11=4*1 X= a[tul X= t12=4*i t alt t 4*n at2]=t14 14 =at13] ati =X a[til t14 t15 = 4*n a[tis]=x
9.1 优化的主要种类 公共子表达式删除、复写传播、删除死代码 B6 x = a[i]; a[i] = a[n]; a[n] = x; t 11 = 4 i x = a[t11] t 12 = 4 i t 13 = 4 n t 14 = a[t13] a[t12] = t 14 t 15 = 4 n a[t15] = x x = t 3 t 14 = a[t1 ] a[t2 ] = t 14 a[t1 ] = x
9.1优化的主要种类 m一 B n *n v= a[ti] 4*i B2 a[t2l <goto B2 4* alti 5 goto B3 ifi>=j goto B Bs B6
9.1 优化的主要种类 i = m −1 j = n t1 = 4 n v = a[t1] i = i + 1 t2 = 4 i t3 = a[t2] if t 3 < v goto B 2 B 1 B 2 j = j − 1 t 4 = 4 j t 5 = a[t 4 ] if t 5 > v goto B 3 if i >= j goto B 6 B 4 B 3 B 5 B 6
9.1优化的主要种类 B x =ali];a]=aln];aln]=x; atJ能否作为公共子表达式? 11=4*1 X= a[tul X三 t12=4*i t4=a[t] 4*n alt]ti4 4 =at13] at=x a[til t14 tis = 4*n a[tis]=x
9.1 优化的主要种类 B6 x = a[i]; a[i] = a[n]; a[n] = x; a[t1 ]能否作为公共子表达式? t 11 = 4 i x = a[t11] t 12 = 4 i t 13 = 4 n t 14 = a[t13] a[t12] = t 14 t 15 = 4 n a[t15] = x x = t 3 t 14 = a[t1 ] a[t2 ] = t 14 a[t1 ] = x
9.1优化的主要种类 m n *n V= alti] 把a[t]作为 4*i a[t2l 公共子表达式 <goto B2 是不稳妥的 B: 因为B有对 4 alti 下标变量at,] t5 goto B3 和at的赋值 ifi>=j goto B Bs
9.1 优化的主要种类 i = m −1 j = n t1 = 4 n v = a[t1] i = i + 1 t2 = 4 i t3 = a[t2] if t 3 < v goto B 2 B 1 B 2 j = j − 1 t 4 = 4 j t 5 = a[t 4 ] if t 5 > v goto B 3 if i >= j goto B 6 B 4 B 3 B 5 B 6 把a[t 1 ]作为 公共子表达式 是不稳妥的 因为 B 5有对 下标变量a[t 2 ] 和a[t 4 ]的赋值
9.1优化的主要种类 9.1.4复写传播 ·复写语句:形式为f=g的赋值 优化过程中会大量引入复写 t -d+e t=d+e a=d+e d+e a=t b =t =d+e =t 删除局部公共子表达式期间引进复写
9.1 优化的主要种类 9.1.4 复写传播 • 复写语句:形式为f = g的赋值 • 优化过程中会大量引入复写 t = d + e a = t 删除局部公共子表达式期间引进复写 t = d + e b = t c = t c = d + e a = d + e b = d + e