1
0
Fork 0
No description
Find a file
Sky Johnson 1189240958 Leaf function opt, selective loop load kill, full GVN constant canonicalization
Three codegen optimizations that improve jsonlex from 1.53x to 1.45x vs gcc -O1:

- Leaf functions with no calls, no callee-saved registers, and no stack frame
  skip prologue/epilogue entirely (just ret).

- GVNLoadCSE no longer kills all inherited loads at loop headers. Pre-computes
  per-loop store sets and only kills loads matching actual stores, preserving
  loop-invariant loads across iterations.

- GVN now canonicalizes both left and right constant operands, with
  post-canonicalization commutative re-sorting. This required three backend
  fixes: SIB and LEA fusion verify same-block operand locality, and phi
  coalescing only fires when the edge value is defined in the predecessor block.
2026-03-26 13:17:45 -05:00
cmd/ash Add directory-based package imports and directory build targets 2026-03-09 15:57:53 -05:00
internal/testutil Phase 1: backend pipeline producing working ELF from hardcoded IR 2026-03-07 09:20:02 -06:00
pkg Leaf function opt, selective loop load kill, full GVN constant canonicalization 2026-03-26 13:17:45 -05:00
testdata/programs Add string.len and string byte indexing to codegen 2026-03-25 06:42:51 -05:00
.gitignore Add backend optimizations: skipStore, cross-block tracking, jmp elimination 2026-03-13 16:02:56 -05:00
benchmarks.md Leaf function opt, selective loop load kill, full GVN constant canonicalization 2026-03-26 13:17:45 -05:00
CLAUDE.md Validate PLAN.md phases 1-3 against spec 2026-03-07 16:10:48 -06:00
go.mod Initial project skeleton: CLAUDE.md, phased plan, package structure 2026-03-06 23:02:12 -06:00
issues.md Update issues.md: document RDX cross-call clobbering fix 2026-03-23 22:46:57 -05:00
optimizations.md Two-phase parsing: defer imported function body parsing until reachable 2026-03-14 10:45:31 -05:00