Skip to content

Latest commit

 

History

History
22 lines (16 loc) · 877 Bytes

report.md

File metadata and controls

22 lines (16 loc) · 877 Bytes

框架代码导读

数据流分析

活跃变量分析

活跃变量分析要求我们填写src/IR_optimze/available_expressions_analysis.c中的内容。

常量传播

死代码检测

死代码检测并没有单独的文件

复制传播

复制传播的算法并不是课程要求掌握的内容,所以我们还需要学习它的算法,它的算法: (注意这里我们的基本块都只是一条语句) in[B]表示B块的入口处的所有复制语句 out[B]表示B块的出口处的所有复制语句 gen[B]表示B块生成的所有复制语句 kill[B]表示B块的中定值的复制语句。例如,若B块中有x = y + z,那么所有包含x的复制语句都会被kill掉。所以很容易知道,IN和OUT集合里,最多只会有一个表达式的左值是x。

meet操作是集合的交集,这是显然的。 out = gen ∪ (in - kill)