summaryrefslogtreecommitdiff
path: root/chapter10
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2026-10-18 22:09:58 -0700
committerCliff Click <cliffc@acm.org>2026-10-18 22:09:58 -0700
commit300d2a9c3672acacc8bdd8d5370a424651a00571 (patch)
treef33d895f6ec4e08692efa4c090c681257553097d /chapter10
parent0be52f8dd82f70d4c557fe916d47dc425401f848 (diff)
downloadSimple-300d2a9c3672acacc8bdd8d5370a424651a00571.tar.gz
Simple-300d2a9c3672acacc8bdd8d5370a424651a00571.zip
Cleanup & backportclinit
The phase rework, made new phases explicit and add them to the CodeGen driver. Fix the flag-spilling on X86 and ARM. Fix the GCM conservative anti-deps and backport.
Diffstat (limited to 'chapter10')
-rw-r--r--chapter10/README.md8
1 files changed, 8 insertions, 0 deletions
diff --git a/chapter10/README.md b/chapter10/README.md
index e55d1057..db72c4cb 100644
--- a/chapter10/README.md
+++ b/chapter10/README.md
@@ -385,6 +385,14 @@ The single memory chain is correct but conservative. A store to `y` can
prevent forwarding an earlier store to `x`, even when the objects are
identical. This is a missed optimization and it motivates the next chapter.
+## Checking the optimized graph
+
+Memory accesses can expose type errors only after their pointer types settle.
+The post-parse pipeline therefore adds `TypeCheck` after iterative peepholes.
+It walks the surviving graph and reports node errors; dead control has already
+been removed. Here `StopNode.iterate()` runs both steps. Chapter 18 introduces
+the `CodeGen` driver and explicit phase entry points.
+
## Executing the graph
The evaluator includes a small late scheduler. A load must execute before a