hxuhack / compiler_project

This is the compiler project webpage for the SOFT130061 @ Fudan University.
24 stars 32 forks source link

活跃分析中的succ #23

Open yilin0518 opened 2 months ago

yilin0518 commented 2 months ago

image 请问括号中succ[n]指的是n直接到达的后继节点n的所有后继块呢?

wileney commented 2 months ago

我觉得应该是所有后继,不过我想问一下活跃分析的目的是什么?

yilin0518 commented 2 months ago

我觉得应该是所有后继,不过我想问一下活跃分析的目的是什么?

活跃分析的话会把一些后续根本用不到的寄存器操作去掉吧,比如连续多个赋值语句,只有最后一个赋值语句会起作用,中间的发现没作用就可以删掉了

bw-S0L commented 2 months ago

n直接到达的后继节点。 temp在block A-->block B live, 那么对于A,该temp是live out,对B,是live in。严格上说是从A-->B 的上live。 对于 A-->B-->C ,C live in 的temp,B上是live out,但在A里面还可能没有def,所以A上不一定是live out。

yilin0518 commented 2 months ago

n直接到达的后继节点。 temp在block A-->block B live, 那么对于A,该temp是live out,对B,是live in。严格上说是从A-->B 的上live。 对于 A-->B-->C ,C live in 的temp,B上是live out,但在A里面还可能没有def,所以A上不一定是live out。

助教,请问如何理解插入Phi任务中”如果变量在某个前驱没有live out,那我们还要插phi吗?“结论是需要呢?

bw-S0L commented 2 months ago

这个问题是想让大家思考和理解一下live in和live out。实际上根据第二条公式,不存在后继live in,但某个前驱没有live out这样的情况。所以”如果变量在某个前驱没有live out‘’和“没有live in”是等同的。