Pass:Debugvar
1. 目标与位置
- 位置:
backend/Debugvar.v
- 输入/输出:
Linear.program →
Linear.program
- 目标:计算局部变量的可用范围并插入调试注释,供 DWARF 生成使用。
2. 核心思想
- 前向数据流分析追踪“变量在何处可用”。
- 将变量的开始/结束区间转为
EF_debug builtin
注释插入线性代码。
3. 关键数据结构与函数
avail:可用性状态(变量 → debug info)。
ana_function:迭代分析直到稳定。
delta_state /
add_delta_ranges:插入范围变化点。
transf_program:程序入口。
4. 与前后 pass 的接口
- 前:
CleanupLabels
- 后:
Stacking
5. 常见边界与约束
- 调试信息只允许使用“安全的 builtin_arg loc”。
- 对调用点与写寄存器指令,需要杀死相应调试信息。