| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | Slides for 2026 REBASEreadme | Cliff Click | 11 days | 1 | -3/+4 |
| | | |||||
| * | Chapter renumber, and split ch 17 | Cliff Click | 12 days | 51 | -1206/+1350 |
| | | | | | | | Renumber chapters 10a, 10b, 11, 12, 13, 14 -> 10, 11, 13, 12, [11,14]. Split ch 17 into a 17a and 17b; shuffle around im/mutable syntax to be consistent, and present it more slowly. THe new immutable syntax is pushed through all later chapters | ||||
| * | First pass README updates | Cliff Click | 13 days | 1 | -31/+34 |
| | | |||||
| * | Fix bug loop tree depth on inf loops | Cliff Click | 13 days | 9 | -13/+125 |
| | | |||||
| * | Restore missing anti-dependence walk | Cliff Click | 14 days | 2 | -10/+33 |
| | | |||||
| * | Move much of the ISA support to shared code | Cliff Click | 14 days | 136 | -2484/+417 |
| | | | | | The ISA shared handlers here are required for a proper compiler, but contain only trivial bit-massaging operations. | ||||
| * | Move debug printing into shared space | Cliff Click | 14 days | 57 | -990/+365 |
| | | | | | Same as the graph viewer, moves a lot of code out of all Nodes | ||||
| * | Merge pull request #258: same constant phi merge test | Cliff Click | 2026-09-30 | 1 | -0/+15 |
| |\ | | | | | | | Preserve the regression across the Chapter 10 split by including it in both chapter10a and chapter10b. Validated Chapter05Test in all 22 affected snapshots (374 tests). | ||||
| | * | Add same constant phi merge test | fuhsnn | 2026-09-29 | 1 | -0/+15 |
| | | | |||||
| * | | Finish forward-port mem ops thru ch25 | Cliff Click | 2026-09-30 | 33 | -542/+1306 |
| | | | |||||
| * | | Forward port mem stuff to ch21 | Cliff Click | 2026-09-30 | 7 | -17/+61 |
| |/ | | | | Also a minor reg-alloc improvement for BrainFuck, ported up to ch25 | ||||
| * | Extend smaller-width C results to full width | Cliff Click | 2026-09-28 | 11 | -13/+242 |
| | | |||||
| * | Backport FunPtr | Cliff Click | 2026-09-28 | 10 | -13/+120 |
| | | | | | | Helps keep functions alive via ptr only (no calls). A few RISC 5 TFP encoding fixes. | ||||
| * | Support extern C ver direct updates | Cliff Click | 2026-09-28 | 3 | -4/+36 |
| | | | | | FIx minor RISC encodings. | ||||
| * | Check un-init not-null constructor fields | Cliff Click | 2026-09-28 | 4 | -9/+13 |
| | | | | | | | | | Propagate BOT inputs; Arith, Load. CallEnd inlining, the FUnPtr dies early. Load asserts when loading against uninit not-null field. Keep not-nill state for storage class. Clean up Node.peep as constant. | ||||
| * | Remove -disablePeephole | Cliff Click | 2026-09-27 | 8 | -92/+6 |
| | | |||||
| * | bug fix widen | Cliff Click | 2026-09-26 | 3 | -13/+9 |
| | | | | | Failed lattice law tests mixing constants and have wide type ints; or mixing wide ints and constant arrays. | ||||
| * | Extend and backport SubNode peephole (#254) | Hsiang-Ying Fu | 2026-09-25 | 4 | -4/+59 |
| | | | | | | | | | | | | | | | | * Extend and backport SubNode peephole * Add tests * Restrict subtraction zero peepholes to integer operands Require resolved integer mode in chapter 25 so zero subtraction preserves floating-point signed zero. Keep nonnumeric operands in the graph for subtraction diagnostics. Add signed-zero coverage from chapter 12 and null-subtraction diagnostics from chapter 22. Confirmed the regressions fail on the original PR. Full Make suites pass in chapters 4-25 (5462 tests), including fresh chapter 25 sys.o compilation. --------- Co-authored-by: Cliff Click <cliffc@acm.org> | ||||
| * | Merge branch 'main' of https://github.com/SeaOfNodes/Simple | Cliff Click | 2026-09-25 | 1 | -1/+1 |
| |\ | |||||
| | * | Update test result for sysV (#253) | Hsiang-Ying Fu | 2026-09-25 | 1 | -1/+1 |
| | | | |||||
| * | | Bunch more animation work | Cliff Click | 2026-09-25 | 5 | -3/+20 |
| |/ | |||||
| * | Bunch better layout options | Cliff Click | 2026-09-24 | 1 | -1/+3 |
| | | |||||
| * | Keyboard shortcuts | Cliff Click | 2026-09-23 | 4 | -4/+20 |
| | | | | | | Fast forward/reverse, pick-a-frame. Shorter type names. | ||||
| * | Graph cleanup | Cliff Click | 2026-09-22 | 2 | -1/+3 |
| | | | | | Phis stay with regions, stop sinks to bottom, | ||||
| * | Tidy up scope display | Cliff Click | 2026-09-22 | 1 | -1/+1 |
| | | |||||
| * | Add shared graph viewer to all chapters | Cliff Click | 2026-09-22 | 38 | -1046/+162 |
| | | |||||
| * | move the graph visualizer into shared code | Cliff Click | 2026-09-21 | 7 | -2270/+90 |
| | | |||||
| * | Final reg-alloc across chapters cleanup | Cliff Click | 2026-09-20 | 9 | -25/+84 |
| | | |||||
| * | Popular use grouping for RegAlloc | Cliff Click | 2026-09-20 | 23 | -175/+787 |
| | | | | | Fix arm BL encodings; ADD/SUB with reversed sign. | ||||
| * | Forward-port allocator bug fixes and test support through ch25 | Cliff Click | 2026-09-20 | 14 | -63/+348 |
| | | | | | Improved spilling | ||||
| * | Add back copy coaleascing in ch21 | Cliff Click | 2026-09-20 | 3 | -3/+34 |
| | | | | | Minor arm encoding fix. | ||||
| * | Backport TypeFunPtr normalization | Cliff Click | 2026-09-20 | 1 | -1/+18 |
| | | |||||
| * | Unify GCM across chapters | Cliff Click | 2026-09-20 | 7 | -111/+127 |
| | | | | | | | Remove the _anti field. Remove the isPinned() call. Add a copyEmpty call. | ||||
| * | Unify mixed-return checking and results | Cliff Click | 2026-09-19 | 14 | -50/+91 |
| | | | | | Unify dominator caching. | ||||
| * | Use isDead() instead of checking null inputs | Cliff Click | 2026-09-19 | 1 | -1/+1 |
| | | |||||
| * | Fixed st8 on arm/risc evals | Cliff Click | 2026-09-19 | 3 | -2/+30 |
| | | |||||
| * | debug printers no longer call self-optimizing accessors | Cliff Click | 2026-09-19 | 18 | -18/+219 |
| | | |||||
| * | Tighter recursive-struct test | Cliff Click | 2026-09-19 | 2 | -1/+22 |
| | | |||||
| * | Handle double-negation preserving not-null knowledge | Cliff Click | 2026-09-19 | 3 | -3/+121 |
| | | |||||
| * | Backport string escapes and many op-assign | Cliff Click | 2026-09-17 | 4 | -12/+213 |
| | | |||||
| * | Parser fix OR temps | Cliff Click | 2026-09-17 | 2 | -1/+43 |
| | | |||||
| * | Backport x86 Not encoding | Cliff Click | 2026-09-17 | 2 | -10/+51 |
| | | |||||
| * | x86 mul reg reg encoding fix | Cliff Click | 2026-09-17 | 4 | -35/+81 |
| | | |||||
| * | Back point cmpmem encoding | Cliff Click | 2026-09-17 | 2 | -1/+34 |
| | | |||||
| * | Get makefiles and fuzzer testing uniform across chapters | Cliff Click | 2026-09-17 | 3 | -9/+38 |
| | | |||||
| * | Fix stale copy-pasted comment on BoolNode's phiCon call (#249) | Symious | 2026-09-09 | 1 | -3/+3 |
| | | | | | | | | | | | | | | | | | | | 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> | ||||
| * | Chapter 25: add separate compilation and simplify SSA construction | Cliff Click | 2026-08-10 | 1 | -3/+4 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Introduce Chapter 25 with separately compiled Simple modules, serialized IR, cross-compilation-unit linking, and native system-library integration. This also completes a broad parser and type-system cleanup needed to make graph construction independent of incomplete parse-time type information. Separate compilation and linking - Add compilation-unit Start/Stop nodes and track functions, classes, aliases, and global indices across compilation-unit boundaries. - Serialize canonical types and ideal graph nodes into ELF objects, including dependency metadata, relocations, global/local bitset remapping, and dense memory-alias information. - Load dependent objects on demand, recursively resolve source and object paths, relink calls and function pointers, and preserve external C symbols. - Distinguish the post-optimization ownership hook from unknown callers so private call graphs can remain precise while public functions remain externally callable. - Add command-line and build support for compiling modules and the reusable `sys` object library. Parser, constructors, and SSA - Replace inline constructor expansion with a hidden default `<init>` followed by an explicit user constructor declared as `new Type = { ... }`. - Keep the default constructor private, pass private object memory through constructor calls, and require user constructors to initialize non-default fields before the object escapes. - Track possibly-uninitialized fields in parser `Var` state and diagnose early reads without encoding parser-only constraints in Load and Store nodes. - Make ordinary parser memory bulk and recover precise alias slices in the optimizer using `MemMerge`, `MemPhi`, and `BulkMemPhi` nodes. - Remove parser-supplied type constraints from Loads and ordinary Phis, defer integer/float arithmetic selection, and keep call shape driven by syntax instead of provisional inferred types. - Preserve chained field declarations as static parser information when flow types are not yet available, including postfix field updates through calls. Types, functions, and escape analysis - Add `TypeScalar` as the common lattice family for integer, float, memory pointer, and function-pointer values, with scalar TOP/BOT values for generic Loads, Stores, parameters, and invalid intermediate expressions. - Represent unresolved struct definitions directly with the `TypeStruct` forward-reference flag while retaining the separate open-structure concept; close and canonicalize recursive structures without side maps. - Add explicit `FunPtrNode` references so constant function pointers retain a graph edge to their Return, and keep referenced functions alive until Opto proves the pointer dead. - Refine public-function and class-initializer escape handling, including public-only fallback escape sets and monotone compilation-unit summaries. - Add guards, proof casts, read-only propagation, pointer-to-integer conversion for non-null FFI arguments, and consistent deep mutability checks at calls. Optimization and code generation - Make weak and unresolved graph inputs compute conservatively and monotonically throughout iterative peepholes and SCCP. - Preserve independent memory slices when sharpening Stores, retain control on conditional Stores, and freeze Store widths from their target field types. - Extend serialization for new node kinds, scalar types, Store modes, function pointers, and memory partitions, preserving serialize/deserialize bijection. - Complete native selection and encoding support across x86-64, RISC-V, and ARM, including FFI pointer conversion and missing integer operations. - Fix x86 immediate multiply REX encoding and assorted scheduling, register allocation, spilling, relocation, and constant-pool issues exposed by the larger linked graphs. System library, tests, and documentation - Compile and link the Simple `sys` library, including libc bindings, I/O, scanners, strings, vectors, array helpers, and executable entry points. - Add Chapter 25 module, serialization, constructor, forward-reference, postfix-update, system, Hello World, and Bubble Sort coverage; update golden graphs and spill expectations for the new IR shape. - Add module and type-system documentation, parser-simplification design notes, grammar updates, examples, diagrams, and graph visualization assets. The resulting compiler passes the raw Chapter 1-24 suite and the Chapter 25 system and separate-compilation tests, including a freshly rebuilt `sys.o` and the native Bubble Sort example. | ||||
| * | Move `addUse()` return statement to `keep()` (#243) | Hsiang-Ying Fu | 2026-07-03 | 1 | -7/+4 |
| | | |||||
| * | Series of minor fixes | Cliff Click | 2026-07-03 | 5 | -24/+27 |
| | | |||||
| * | minor typoes | Cliff Click | 2026-01-25 | 2 | -2/+2 |
| | | |||||
