Files
BFM-decomp/docs/lever-progress.tsv
T
Drew T d30ccc9a72 phase-36: T7 agent b8 — func_80135888, the largest class left, closed with all five levers gone (134 bodies; 24,789 → 24,119 sites, R22 218/218)
check-all: 218 passed, 0 failed of 218
  lever_census --check: 24,119 pin/asm sites, 24,119 marked !FAKE, 0 UNMARKED — OK

Three moves, each predicted from a dump before it was compiled:
- while -> a guarded do-while (29 to 22). Cross-jump (jump.c:1969 -> find_cross_jump :2371, from toplev.c:3142) had
  matched the load in front of the jump against the one in front of the bottom test and deleted three instructions; the
  guarded form makes the two tails differ.
- the duplicated pre-loop call block -> goto (22 to 6). This is an allocno_compare rank move (global.c:585-611): the
  priority is floor_log2(refs)*refs/live, reg_n_refs is loop-weighted (flow.c:2067), the in-loop copy of that call is
  worth two references, and deleting the out-of-loop copy takes exactly one off — 8 to 7 crosses a floor_log2 step and
  drops the pointer's priority from 3157.9 to 1891.9. The predicted allocation order matched the dump exactly. The
  rewrite is byte-neutral on its own: reorg steals the target's first insn into the delay slot and retargets.
- the two-arm mask temp inlined (6 to 0): set in two arms it has two deaths, fails local-alloc.c:472, and combine_regs
  bails at :1774, so it went to global allocation and took its copy preference.

Harvested as R21 second_consumer, from agents b2 and b6 together: give a computed value a second consumer before its
copy, either by chaining (v = slot = E) or by hoisting the store above it. cse deletes such a copy only when the
producer sits immediately before it (cse.c:7440-7501, guard :7454-7460), and flow links only the FIRST following use
(flow.c:2076-2091), so a store in between defeats both. R9 can never produce it — the two statements share the
identifier, so its independence guard refuses the swap. Known-true: the joint form scores 0 on b6's pre-bank text, and
the single-site forms do not, which is the third measured case this session of a joint edit no hill-climb can reach.

Also recorded from b8, worth a pre-check later: declaration-order moves are PROVABLY DEAD on a register residual whose
allocnos have distinct priorities, because global.c:604-610 compares priority first and only ties by allocno number —
4,811 compiles of those candidates sat flat because of it.
2026-09-10 13:31:47 -06:00

5.7 KiB

1datemilestoneheadsites_ABpinsasmbodies_ABdistinct_ABmarkedunmarkedgte_leversper_tu_asm_macrosclass_Cclass_Dclass_Eclass_Fclass_G
22026-09-09T6 r1 (rung R's first class)1761a3125339572051213445125781758339570462314172250742844576
32026-09-09T6 d1 (rung D's four exemplars)8fac96651339532050813445125741758339530462314172250742844576
42026-09-09T6 p1 (four classes propagated)a2da99b13334271998213445120481755334270462314172250742844576
52026-09-09S101 rung G g1 (the guided search's first run: 1 of 16 exemplars, 132 bodies)623e55340332951998213313119161754332950462314159050742844576
62026-09-09S101 rung G g2 (wider beam + R10/R12/R13/R8-cse: 1 of 16, 132 bodies)584031c71330311971813313117841753330310462314159050742844576
72026-09-09S101 rung G g3 (the next 64 classes: 13 of 64, 1,516 bodies)5ae0b5ceb310251844212583102681740310250462314159050742844576
82026-09-09S101 rung G g4s (the 13 explained names, 38 classes: 3 of 38, 133 bodies)068781ae0308921830912583101351737308920462314159050742844576
92026-09-09S101 rung G g5 (the head re-drawn wide: 5 of 70, 62 bodies)1ec67f667308061826112545100731732308060462314159050742844576
102026-09-09S101 rung G g6 + g6b (the tail: 47 + 63 of 400 small classes, 93 + 186 + 47 bodies)2f3ce92a130358179541240497471624303580462314159050742844576
112026-09-10S102 T7 a1 — func_80156044 closed by an agent (merge-point expression sunk into the if/else arms, both $2/$3 pins gone); 130 bodies banked (1 + 129 propagated)5a8bd102130098176941240496171623300980462314159050742844576
122026-09-10S102 T7 s1 — the R15 sweep of the head: 6 exemplars closed by the sink alone (267 bodies), no drafting tokens861dd065129697174271227093501617296970462314159050742844576
132026-09-10S102 T7 a2 — func_80168828: the constant-holder pin deleted and one adjacent swap closes it (125 bodies, 1 of 2 pins off; the $4 pin is forced by the header's (void) declaration)c00ffe5d429572173021227093501617295720462314159050742844576
142026-09-10S102 T7 s3 (partial, the run crashed in propagate) — the constant-holder draw: 10 bodies closed975850ff829533172661226793261594295330462314159050742844576
152026-09-10S102 T7 s3b — the constant-holder draw re-run after the propagate fix: 1 of 80, 6 bodies; 59 of 80 hit the compile budget5603a114c29527172601226793201593295270462314159050742844576
162026-09-10S102 T7 s5 — the first broad TAIL sweep with R15/R16/R17/R18: 285 of 800 bodies closed lever-free, no drafting tokens449acd8cb29204170291217590351308292040462314159050742844576
172026-09-10S102 T7 s6 — the last never-attempted exemplars: 25 of 337; the fresh pool is now empty67e91ad4d29148169961215290101283291480462314159050742844576
182026-09-10S102 T7 s7 (stopped early to restore agent cadence) — 5 of 207 judged at the wider width724c6885929140169891215190051280291400462314159050742844576
192026-09-10S102 T7 a7 — func_801287B8: a truncated local extern was faking a pin; the missing call argument restored through a function-pointer cast (127 bodies)bb0e95c7c29013168621215188781279290130462314159050742844576
202026-09-10S102 T7 a4 — func_8016C49C: one do-while on the function's LAST statement doubles a loop-note reference weight and flips allocno_compare (126 bodies)9f5b2217628887167361215187521278288870462314159050742844576
212026-09-10S102 T7 burst — a8/a12/a18/a19 banked (132+118+119+134 bodies): the call-arity class twice, a MEM_IN_STRUCT_P alias flip, and a sequence-point splitfb6c857f727984159651201982491275279840462314159050742844576
222026-09-10S102 T7 burst — a5/a9/a11/a16/a25 banked; the MISSING CALL ARGUMENT class confirmed six times independently (m2c dropped arguments at unprototyped and indirect call sites)c6b380fcd26714153241139076121271267140462314159050742844576
232026-09-10S102 T7 burst — a22 banked (126); a14 REFUSED as an invented zero term; a6/a10/a15 read without closing374c8a0e926462151981126474861270264620462314159050742844576
242026-09-10S102 T7 s8 — the first R19 sweep: 3 of 55 classes closed by restoring a dropped call argument, 2 compiles eachf3de70fce26456151931126374831267264560462314159050742844576
252026-09-10S102 — 16,759 lying call declarations repaired free (3,439 units, R22 218/218); levers unchanged, truth improved51028a78d26456151931126374831267264560462314159050742844576
262026-09-10S102 T7 b1 — func_801651B8: the hand-walked pointer folded back into the index, one induction variable instead of two (127 bodies)8c0e7c54926202150661113673561266262020462314159050742844576
272026-09-10S102 T7 b3 — func_8016CBC0: two counter chains narrowed TOGETHER (128 bodies); single declarations could never reach itacba5c59d26074149381113672281265260740462314159050742844576
282026-09-10S102 T7 wave b — b2/b5/b5s/b6 banked plus R19 and R20's own closes (766 bodies): a chained assignment, a symbol alias defeating cross-jump, and the store hoisted above its copy9d78fc40824915145411037465771259249150462314159050768044576
292026-09-10S102 T7 b7 — func_80166690: four accumulators retyped short in ONE edit, the truncation temps deleted, the colour temp typed to its destination field (126 bodies)17d192d2424789144151037464511258247890462314159050768044576
302026-09-10S102 T7 b8 — func_80135888: a guarded do-while defeating cross-jump, a duplicated block replaced by goto to shed one loop-weighted reference, and a two-arm temp inlined (134 bodies, the largest class)0d92d102924119138791024063171257241190462314159050768044576