summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Add back copy coaleascing in ch21Cliff Click2026-09-2035-1069/+1888
| | | | Minor arm encoding fix.
* Missed fileCliff Click2026-09-201-71/+106
|
* Ch 20 Reg AllocCliff Click2026-09-2013-106/+537
| | | | | | | Includes all bug fixes from later chapters, so its at least correct. Skips a lot of improvement heuristics, these get added in later chapters. Includes spill-stats, to more easily track improvements. Includes targeted tests.
* Backport TypeFunPtr normalizationCliff Click2026-09-205-3/+72
|
* Unify GCM across chaptersCliff Click2026-09-20113-1182/+1627
| | | | | | Remove the _anti field. Remove the isPinned() call. Add a copyEmpty call.
* Unify mixed-return checking and resultsCliff Click2026-09-19189-570/+1381
| | | | Unify dominator caching.
* Fix ch21 MulIX86 encodingCliff Click2026-09-192-6/+53
|
* Use isDead() instead of checking null inputsCliff Click2026-09-1921-34/+57
|
* Fixed st8 on arm/risc evalsCliff Click2026-09-1916-11/+182
|
* debug printers no longer call self-optimizing accessorsCliff Click2026-09-19141-144/+2272
|
* Handle r/w <clinit> sectionsCliff Click2026-09-198-32/+159
|
* AI skills updateCliff Click2026-09-192-267/+169
|
* Tighter recursive-struct testCliff Click2026-09-195-2/+65
|
* Handle double-negation preserving not-null knowledgeCliff Click2026-09-1940-25/+1185
|
* Backport string escapes and many op-assignCliff Click2026-09-1725-73/+1300
|
* Parser fix OR tempsCliff Click2026-09-175-4/+86
|
* Backport x86 Not encodingCliff Click2026-09-179-41/+225
|
* x86 mul reg reg encoding fixCliff Click2026-09-1715-117/+249
|
* Back point cmpmem encodingCliff Click2026-09-1710-14/+144
|
* Get makefiles and fuzzer testing uniform across chaptersCliff Click2026-09-1765-197/+1042
|
* Fix phi wideningCliff Click2026-09-172-6/+4
|
* up timeoutsCliff Click2026-09-166-5/+8
| | | | add deps on dominance crawls
* Update FuzzerWrap.javaCliff Click2026-09-141-1/+1
|
* Handle dying escapenodeCliff Click2026-09-142-1/+19
|
* Update FuzzerWrap.javaCliff Click2026-09-141-1/+1
|
* Update FuzzerWrap.javaCliff Click2026-09-141-1/+2
|
* Fix parser lifetime bugCliff Click2026-09-142-9/+5
|
* int-only ops force inputs to be int-onlyCliff Click2026-09-1411-19/+52
| | | | | Lest an int-only op, having lifted result types to int, get a zero-fold (e.g. X^0) to their mode-not-set input and have types fall. Handle idepth-cache overflow
* Refinement on guard removalCliff Click2026-09-144-9/+18
| | | | | Fix keep/unkeep balance. Always fuzz small.
* Do BulkMemPhi splits one by oneCliff Click2026-09-133-113/+41
|
* Resolve numeric needs more OptoCliff Click2026-09-139-16/+32
| | | | | | Missing Arith mode picks high or low according to pre/post Opto FunPtr improves sig return based on Opto return type. Minus with missing mode is optimistic, same as Arith
* A few missing addDepsCliff Click2026-09-1313-75/+164
| | | | | | | IterPeeps cnt does not reset. Faster schedulableIses, reuses ID Map. Test in Iter work if not GVN table ScheduableUses peeks through folding/dead Call/Fun
* Major bugfix around unscheduable graphsCliff Click2026-09-127-29/+268
| | | | | | | | Robust assert about all data ops are schedulable. Utiltiies for several places domionator-like stuff is used. Removing a Phi with matching null/not-null values is now more robust; removes a major source if scheduling misalignment. Big comments about what gets covered by a null check, or not. Permanent list of fuzzer seeds that used to fail
* More robust on broken inputsCliff Click2026-09-117-7/+37
|
* Fix OR of 0Cliff Click2026-09-111-1/+1
| | | | Allowed only if the replacement does not fall, will be lifted by OR to an TypeInteger
* Removing a phi-of-guard, remove nested guardsCliff Click2026-09-112-3/+9
|
* Update LoadNode.javaCliff Click2026-09-111-2/+1
|
* typoCliff Click2026-09-111-1/+1
|
* Optional reset Types so Fuzzer can work.Cliff Click2026-09-1110-41/+47
| | | | FunNodes never GVN.
* More code coverage cleanupCliff Click2026-09-104-99/+62
|
* Cleanup coverage issuesCliff Click2026-09-1010-254/+158
| | | | A lot of tests become asserts; general cleanup in MemOps and PhiOps
* Merge branch 'main' of https://github.com/SeaOfNodes/SimpleCliff Click2026-09-0926-84/+95
|\
| * Docs: Proj is not always a data node (#250)Symious2026-09-092-2/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The node recap tables in chapters 4 and 5 classify `Proj` as "Data", but `ProjNode.isCFG()` has returned true for control projections since chapter 4: ch4: return _idx==0; ch5+: return _idx==0 || ctrl() instanceof IfNode; So `Proj#0` off `Start` is a control node, and from chapter 5 both projections off an `If` are too -- which is exactly why the dominator walk in `IfNode.compute()` can step through them. Change the Type column to "Data / Control" and add a note under each table pointing at `isCFG()`. Table alignment is unchanged: "Data / Control" is the same width as "Abstract class". Docs-only change. Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
| * Fix stale copy-pasted comment on BoolNode's phiCon call (#249)Symious2026-09-0919-57/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The three comment lines above `AddNode.phiCon(this, ...)` in BoolNode were copy-pasted from MulNode and never adapted: they use `*` as the operator and describe the rotated shape `(x * (phi cons)) * con`. For BoolNode neither is right. The operator is a compare, and in chapters 6-9 `rotate` is hard-coded `false`, so the rotated shape is never matched; the shapes actually handled are `(phi cons) cmp con` and `(phi cons) cmp (phi cons)`. Reword the comment accordingly, and in chapters 6-9 add a line noting why rotate is off. Chapters 10-25 pass `this instanceof EQ`, so no such claim is made there. Comment-only change; no code is touched. Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
| * Fix typo: spline -> spine in AddNode (chapters 4-8) (#248)Symious2026-09-095-25/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The add canonicalization builds a left-leaning chain of AddNodes -- the "spine" -- with off-spine operands hanging off each in(2). The comparator and its comments were spelled "spline" (a curve / mechanical part), which was already inconsistent with the goal comment in the same method: // Goal: a left-spine set of adds, with constants on the rhs Chapters 9 and later already use "spine" / "spine_cmp"; this brings the earlier chapters in line. Comment and private-method-name only, no behavior change. Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* | Remove a bunch of dead or unused codeCliff Click2026-09-0912-162/+35
|/
* Fix some lattice bugsCliff Click2026-09-093-22/+37
|
* Add some Type test casesCliff Click2026-08-212-2/+16
|
* Remove dead codeCliff Click2026-08-2032-310/+38
| | | | Clarify several TODO's as "Should not reach here"
* Squashed commit of the following:Cliff Click2026-08-2021-47/+86
| | | | | | | | | | | | | | | | commit a00bfc643e834498b020eb47ee37da4a17cf6e39 Author: Cliff Click <cliffc@acm.org> Date: Thu Aug 20 12:27:52 2026 -0700 Add a emacs Simple.el mode commit b5b399e16038d20ba6928aa329268b229b90e2f7 Author: Cliff Click <cliffc@acm.org> Date: Thu Aug 20 11:37:17 2026 -0700 Tone down expensive asserts Put the expensive asserts on a log-scale flag, run them only once every 2^N attempts