循环不变式外提是什么

循环不变式外提是什么

把循环里「每轮算的都一样」的式子提到循环外,叫【0】。 循环优化模型:is_invariant(用到的变量, 循环变量)=式子不含循环变量就是循环不变、可外提;hoistable 数能外提的条数;循环

阅读更多 →
循环为什么值得重点优化

循环为什么值得重点优化

优化器特别关注循环,是因为【0】。

阅读更多 →
补全:判断是否变小

补全:判断是否变小

补全 shrank:优化后条数更少就是变小。 贯穿本节的 IR 模型(判题机没 gcc,这是它的确定模型):程序是三地址码元组列表,每条 (dst, op, a, b)——op ∈ const/cop

阅读更多 →
补全:算删了几条

补全:算删了几条

补全 removed:优化前减优化后。 贯穿本节的 IR 模型(判题机没 gcc,这是它的确定模型):程序是三地址码元组列表,每条 (dst, op, a, b)——op ∈ const/copy/+

阅读更多 →
补全:数指令条数

补全:数指令条数

补全 size:交回程序指令条数。 贯穿本节的 IR 模型(判题机没 gcc,这是它的确定模型):程序是三地址码元组列表,每条 (dst, op, a, b)——op ∈ const/copy/+/-

阅读更多 →
这次优化变小了吗

这次优化变小了吗

按模型,前后都是 2 条,shrank 交回什么? 贯穿本节的 IR 模型(判题机没 gcc,这是它的确定模型):程序是三地址码元组列表,每条 (dst, op, a, b)——op ∈ const/

阅读更多 →
这次优化删了几条

这次优化删了几条

按模型,优化前 5 条、优化后 3 条,removed 交回几? 贯穿本节的 IR 模型(判题机没 gcc,这是它的确定模型):程序是三地址码元组列表,每条 (dst, op, a, b)——op ∈

阅读更多 →
怎么判断一趟优化有没有白做

怎么判断一趟优化有没有白做

判断一趟优化是否起了作用,常看【0】。 贯穿本节的 IR 模型(判题机没 gcc,这是它的确定模型):程序是三地址码元组列表,每条 (dst, op, a, b)——op ∈ const/copy/+

阅读更多 →
优化 pass 通常怎么组织

优化 pass 通常怎么组织

编译器里的多趟优化,通常【0】。 贯穿本节的 IR 模型(判题机没 gcc,这是它的确定模型):程序是三地址码元组列表,每条 (dst, op, a, b)——op ∈ const/copy/+/-/

阅读更多 →
为什么在 IR 上做优化

为什么在 IR 上做优化

优化大多放在 IR(中间表示)上做,是因为【0】。 贯穿本节的 IR 模型(判题机没 gcc,这是它的确定模型):程序是三地址码元组列表,每条 (dst, op, a, b)——op ∈ const/

阅读更多 →