mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-26 13:33:34 -04:00
975850ff84
- R16 writes a local whose only assignment is one integer literal at every use and deletes it. R6 stops at a temp read exactly once, so a holder read four times was invisible to the search and its whole family with it. Deleting it is byte-neutral alone but removes a quantity from the block, which is what lets the next move reach the allocator. - R17 splits a run of consecutive same-literal assignments by moving the nearest differently-valued one into it, at each interior split point. find_free_reg's live-range scan (local-alloc.c:2109-2110): while the two constants' ranges are disjoint they share a caller-saved register; splitting makes the first live across the second and it takes another colour. - known-true check: on the seed that keeps func_80168828's semantically-forced $4 pin, R16 then R17 reaches score 0 (OTHER; mine 108 ins, target 108) — MATCH at three of the six offered split points, in ten compiles where the blind search needed 2,271. - the engine selftest's caller-saved assertion is now the ordering invariant (every targeted lever before every blind family) rather than a fixed window widened once per new generator. - delever --selftest OK (4 new controls); delever_search --selftest OK; tool_census --check OK; SETUP row (R21).