From 843e628e8be2e2ca1249238c2c4cf2e84f2e80d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E9=BE=99=E6=88=90?= Date: Fri, 5 Dec 2025 10:16:11 +0800 Subject: [PATCH] fix a bug --- README.md | 2 +- src/passes/Mem2Reg.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1666ca5..0e8d22f 100755 --- a/README.md +++ b/README.md @@ -2,5 +2,5 @@ 本仓库为 USTC 编译原理和技术 2025 的课程实验仓库。在本学期的编译实验中,你们将构建一个从词法分析器开始到后端代码生成的JIANMU编译器。 -本分支提供了直到 lab2 的助教代码实现,可以用于完成 lab3 phase2。 +本分支用于完成 lab4。 diff --git a/src/passes/Mem2Reg.cpp b/src/passes/Mem2Reg.cpp index 05062f9..fc26813 100644 --- a/src/passes/Mem2Reg.cpp +++ b/src/passes/Mem2Reg.cpp @@ -142,7 +142,7 @@ void Mem2Reg::rename(BasicBlock *bb) { // 步骤一:对每个 alloca 非数组变量(局部变量), 在其存储值栈存入其当前的最新值(也就是目前的栈顶值) // 步骤二:遍历基本块所有指令,执行操作并记录需要删除的 load/store/alloca 指令(注意: 并非所有 load/store/alloca 都是 Mem2Reg 需要处理的) // - 步骤三: 将 store 指令存储的值,作为其对应局部变量的最新值(更新栈顶) - // - 步骤四: 将 phi 指令的所有使用替换为其对应的局部变量的最新值 + // - 步骤四: 将 phi 指令作为其对应局部变量的最新值(更新栈顶) // - 步骤五: 将 load 指令的所有使用替换为其读取的局部变量的最新值 // 步骤六:为所有后继块的 phi 添加参数 // 步骤七:对 bb 在支配树上的所有后继节点,递归执行 rename 操作 -- GitLab