diff options
| author | Cliff Click <cliffc@acm.org> | 2026-09-20 14:49:32 -0700 |
|---|---|---|
| committer | Cliff Click <cliffc@acm.org> | 2026-09-20 14:49:32 -0700 |
| commit | 0487ef57a2b7f80fd6f9ed3f6aeea0b0ec88e89f (patch) | |
| tree | ce84334450dbe54ca9ea3c7f39419730b4f86678 /skills | |
| parent | 4f3d4859e9096ab8f15c3e9eb02d154c268b108d (diff) | |
| download | Simple-0487ef57a2b7f80fd6f9ed3f6aeea0b0ec88e89f.tar.gz Simple-0487ef57a2b7f80fd6f9ed3f6aeea0b0ec88e89f.zip | |
Add back copy coaleascing in ch21
Minor arm encoding fix.
Diffstat (limited to 'skills')
| -rw-r--r-- | skills/chapter25-codex-notes.md | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/skills/chapter25-codex-notes.md b/skills/chapter25-codex-notes.md index b38d1c29..49823027 100644 --- a/skills/chapter25-codex-notes.md +++ b/skills/chapter25-codex-notes.md @@ -147,8 +147,29 @@ lessons rather than duplicating that history. membership, seeds, or targets when comparing chapters. - Chapter 20's corrected baseline costs one extra weighted move (354->355 over 39 compilations); document this as a correctness cost. Advanced quality - heuristics remain staged. Stop after 20 for Cliff's review. When reaching 21, - shorten its excessive encoding detail as requested. + heuristics remain staged. Chapter 21 is now implemented; stop for Cliff's + review before 22. Its shortened README links the retained encoding reference. +- Chapter 21 changed several inherited inputs/ABIs. Its Chapter20Test now freezes + all 13 original programs; Chapter21AllocTest retains the four revised cases, + counted with the native variants as cohort 21. On Windows the cohorts are + 39 and 52 compilations. Preserve source/target membership when moving forward. +- Use an ablation in the same compiler to measure each staged heuristic. Native + ABI/lowering changes make the Chapter 20 and 21 totals different even with the + same sources. In 21, coalescing saves 127 weighted moves, but deferring later + heuristics costs 174 against the old combined snapshot; disclose both. +- Chapter 21's spill reporter defers quality-golden failures until reporting ends, + so all target/runtime checks still run. The command must still exit nonzero. + Keep full native process exit codes and check each emulator's own result memory. +- An ARM store of Top can originate in the optimizer, before allocation. Inlining + deletes the function entry before its Return necessarily folds away; compute + the return type from its live inputs. Never infer unreachable return data from + `_fun.isDead()` alone. This correction is now present in 20-25, with a seeded + interpreted-result regression; 20 first uses linked Return types at call ends. +- Validate beyond encoding. The repaired seed-9 String case then exposed missing + register-register SUB support in the ARM emulator (now corrected in 21-25). + Check real results and unchanged flags; successful allocation/encoding alone + does not establish execution correctness. The 1,170-case Chapter 21 seed sweep + now passes through encoding, and the original ARM/RISC-V hash results agree. - Copy cleanup/reuse must check kill masks even when an instruction has no LRG; before coloring, a fixed-register definition can clobber despite `_reg==-1`. Cloning is valid only if its output mask can satisfy the use. A fixed-register |
