循环不变式外提是什么
把循环里「每轮算的都一样」的式子提到循环外,叫【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 通常怎么组织
编译器里的多趟优化,通常【0】。 贯穿本节的 IR 模型(判题机没 gcc,这是它的确定模型):程序是三地址码元组列表,每条 (dst, op, a, b)——op ∈ const/copy/+/-/
为什么在 IR 上做优化
优化大多放在 IR(中间表示)上做,是因为【0】。 贯穿本节的 IR 模型(判题机没 gcc,这是它的确定模型):程序是三地址码元组列表,每条 (dst, op, a, b)——op ∈ const/