Impl/topic17 - #66
Impl/topic17#66FeelTheBeats wants to merge 6 commits into
Conversation
🤖 AI Code Review
📁
|
…iction unique F1: FunctionFrameAllocator now advances each block base by the blocks' actual post-emission spill_slots, so reload-time eviction slots are covered by the frame and can no longer overlap the saved ra/s-reg area; spill region tiling and injected (sp) offsets are validated. F2: reload-time eviction uses the live owners map instead of a stale snapshot, filters already-spilled vregs, keeps alloc_map consistent, and never reuses a register held by an instruction operand (I4). F3: the saved callee-saved set is collected from the emitted body rather than the static pass-1 alloc_map, so dynamically picked reload/scratch s-regs are saved and restored. F7: allocate_block enforces invariant I2 on emitted instructions in strict mode (distinct sources must not share a register). F6: the DAG pipeline normalises the linear-v1.5 alias and raises on unsupported/unknown modes instead of silently falling back to greedy.
…rage - F1: frame slots cover reload-eviction slots and stay below the saved ra area; _check_spill_bounds rejects out-of-frame spill accesses. - F2: double spilled operands evict distinct victims (single 'evict wB'), distinct source registers, executed result 33; unit checks for _select_victim skipping spilled vregs and reload never targeting an instruction operand register (I4). - F3: dynamically selected s0 is saved/restored; sentinel survives. - F4: ra saved once and restored before every ret, independent multi-function frames, per-function frame balance, and determinism. - F6: DAG path rejects linear and unknown modes; F7 unit test for the output-time I2 alias check; allocator edge cases (empty/single/strict off counting).
- Describe the emit-time spill accounting (F1) and emit-collected s-reg save set (F3) in the design and development docs. - Add the already-spilled victim constraint to the select_victim rule and correct the save-set rule (F2/F3). - Replace the unreproducible integration numbers (7313a24 / 30 passed / 1011 passed) with this branch's baselines (42 directed, 710 full) and record the A4 if/while differential as blocked by the pre-existing instruction_select defects (E3).
No description provided.