summaryrefslogtreecommitdiff
path: root/skills
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2026-10-01 15:47:15 -0700
committerCliff Click <cliffc@acm.org>2026-10-01 15:47:15 -0700
commitbd0ef17d0f9563ed9579fe060b785211e8378006 (patch)
treed8f45cdfd6e7ee295997d11ff948ca4950153721 /skills
parent5dd5b7a2d03885cb767bbf2b609d56f8ef897301 (diff)
downloadSimple-bd0ef17d0f9563ed9579fe060b785211e8378006.tar.gz
Simple-bd0ef17d0f9563ed9579fe060b785211e8378006.zip
Restore missing anti-dependence walk
Diffstat (limited to 'skills')
-rw-r--r--skills/chapter25-codex-notes.md5
1 files changed, 4 insertions, 1 deletions
diff --git a/skills/chapter25-codex-notes.md b/skills/chapter25-codex-notes.md
index 208494e7..c409cd55 100644
--- a/skills/chapter25-codex-notes.md
+++ b/skills/chapter25-codex-notes.md
@@ -260,7 +260,10 @@ For shared viewer work, read [the graph viewer notes](graph-viewer-codex-notes.m
- Keep anti-dependence marks in a pass-local array, not CFGNode. In 11-20 the
evaluator independently reschedules nodes, so retain the full store placement
range when constraining loads; using only GCM's final store block breaks
- `SchedulerTest.testStoreInIf2`. From 21, the chosen store block suffices.
+ `SchedulerTest.testStoreInIf2`. Retain the dominator walk from 21 onward too:
+ a conditional Store can precede a Load's late block without dominating it.
+ Its exact block need not be marked, but an ancestor intersects the Load's
+ placement range. `Chapter21Test.testReadBeforeConditionalStore` checks this.
Preserve each chapter's alias/tuple memory representation when finding stores.
- Changes in node order can expose encoding bugs. Chapter 21's empty-block scan
mistook entry to a nested loop for a backedge; require the same loop-tree node,