这一章还蛮需要理解的,所以在这里做一个详细复盘
高光理解:
Reaching Defination Anaylsis 算法为什么能停?因为每一个BB的gen和kill不会变,所以IN不变OUT不变。Entry的OUT是空,即除EntryBB外的首个BB的IN被定死了!第一个非Entry的BB的OUT率先不变,带领剩下的BB OUT走向不变
1. Overview and preliminaries






2. Reaching Definition Analysis





算法为什么能停?因为每一个BB的gen和kill不会变,有的BB的OUT率先不变,带领剩下的BB OUT走向不变

详细运行流程见视频:课程03(Data Flow Analysis I)_哔哩哔哩_bilibili
3. Live Variables Analysis



注意:trasfer func不能直接带入useB和defB,因为如果一个BB中先def后use,则在INpoint的v仍是deaf,不会因为BB后部分有v的use而live


4. Avaliable Expression Analysis








Comments NOTHING