Skip to content

Commit b3b208f

Browse files
committed
Merge commit '7d7413a96ef198ac24e180fd7e692fca5e419d04'
2 parents 03ee7d9 + 7d7413a commit b3b208f

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

docs/smalltalk/st0060.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ Issue 发出后不久,Alan Donovan 就将它关闭了,他表示 SSA 没问
8787
...
8888
```
8989

90-
Block 3 中存在两条 Phi 指令,按照之前提到的**常规逻辑**,第一条指令的结果是第二条指令的入参,指令执行存在先后关系;而实际上生成 Phi 指令时,基于这样一个假设,既:“**同一个 Block 中的 Phi 指令并行执行**”,也就是说 `phi [0: t1, 1: t6]` 中的 `t6`,应该取其进入 Block 3 前的值,而非 `phi [0: t1, 1: t4]` 的返回值。按照这一假设,`t7`(既y) 的值为上一次迭代的 `t6`(既x),运行逻辑便与源代码意图一致了。
90+
Block 3 中存在两条 Phi 指令,按照之前提到的**常规逻辑**,第一条指令的结果是第二条指令的入参,指令执行存在先后关系;而实际上生成 Phi 指令时,基于这样一个假设,既:“**同一个 Block 中的 Phi 指令并行执行**”,也就是说 `phi [0: t1, 1: t6]` 中的 `t6`,应该取其进入 Block 3 前的值,而非 `phi [0: t1, 1: t4]` 的返回值。按照这一假设,`t7`(既y) 的值为上一次迭代的 `t6`(既x),运行逻辑便与源代码意图一致了。巧合的是,凹编译器和 `ssa/interp` 犯了相同的错误——既按串行方式处理 Phi 指令。
9191

9292
实际上在之前的私下讨论中,考虑过“Phi 应并行执行”的可能:
9393

0 commit comments

Comments
 (0)