mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-02 16:00:27 -04:00
fc7d8c4019
- a22: func_8017B238 closed by giving the if-arm's pointer and the else arm's first table address one function-scope
local. Three decisions turn on that edit, all dump-proven: make_regs_eqv's head rule (cse.c:840-857), set_preference
stripping one RTX level so an arithmetic set inherits its operand's register (global.c:1535), and combine_regs with
birthing_insn_p's reg_n_sets == 1 (local-alloc.c:1765-1788, sched.c:2469) — which is why the merge must be with the
else arm's non-call-crossing temp. 26,714 -> 26,462 sites.
- a14 reaches score 0 on func_80139BE0 but only by an INVENTED identically-zero term whose sole purpose is to keep a
value live. NOT BANKED: an invented no-op expression is a compiler-forcing construct in C clothing, and worse than the
marked launder it replaces because the launder is counted and this would be silent. The phase's own rule is ban the
silence, not the lever. Parked for the structs/types phase with its reading; the tree comment above it ('no pure-C
spelling survives that fold') is refuted.
- a6 corrects cookbook 455: cse1 (cse.c:7439-7502) rewrites the producer's destination to the copy's whenever the
producer is the immediately preceding insn; combine only finishes the job once that adjacency is broken. It enumerated
the three lever-free blockers can_combine_p admits and showed the body can pay for none, then scanned all 4,284 built
objects for the shape — 101 hits, every lever-free precedent paying with a genuine second use, a narrow local with two
consumers, or a join label.
- a24's residual was one absent load: cse forwards a just-stored halfword so no lh is emitted, and seven branch
displacement mismatches were downstream of it. Its method gap is the instrument to fix next — three agents have now
asked for local-alloc's quantity table in the pack, and alloc_table.py prints an empty or one-row table because it
keys on dump lines that are often absent.
- Drew's struct question answered on the record: structs are not in the binary (types are erased; no metadata in a
retail build), what is there is base + offset + width + stride, so a struct is an inference across every function
touching a base — which makes per-function struct invention the wrong unit and is the failure P35 already recorded.
Recommendation: keep pins as the main lane, build a zero-token struct evidence census beside it, park stuck pins with
their evidence, and fix call signatures first because they are the bigger and cheaper blocker (471 narrow call sites
in 323 pinned bodies). Measured: 372,224 raw cast dereferences against 92,624 struct member accesses.
4.2 KiB
4.2 KiB
| 1 | date | milestone | head | sites_AB | pins | asm | bodies_AB | distinct_AB | marked | unmarked | gte_levers | per_tu_asm_macros | class_C | class_D | class_E | class_F | class_G |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | 2026-09-09 | T6 r1 (rung R's first class) | 1761a3125 | 33957 | 20512 | 13445 | 12578 | 1758 | 33957 | 0 | 462 | 314 | 1722 | 50 | 7428 | 445 | 76 |
| 3 | 2026-09-09 | T6 d1 (rung D's four exemplars) | 8fac96651 | 33953 | 20508 | 13445 | 12574 | 1758 | 33953 | 0 | 462 | 314 | 1722 | 50 | 7428 | 445 | 76 |
| 4 | 2026-09-09 | T6 p1 (four classes propagated) | a2da99b13 | 33427 | 19982 | 13445 | 12048 | 1755 | 33427 | 0 | 462 | 314 | 1722 | 50 | 7428 | 445 | 76 |
| 5 | 2026-09-09 | S101 rung G g1 (the guided search's first run: 1 of 16 exemplars, 132 bodies) | 623e55340 | 33295 | 19982 | 13313 | 11916 | 1754 | 33295 | 0 | 462 | 314 | 1590 | 50 | 7428 | 445 | 76 |
| 6 | 2026-09-09 | S101 rung G g2 (wider beam + R10/R12/R13/R8-cse: 1 of 16, 132 bodies) | 584031c71 | 33031 | 19718 | 13313 | 11784 | 1753 | 33031 | 0 | 462 | 314 | 1590 | 50 | 7428 | 445 | 76 |
| 7 | 2026-09-09 | S101 rung G g3 (the next 64 classes: 13 of 64, 1,516 bodies) | 5ae0b5ceb | 31025 | 18442 | 12583 | 10268 | 1740 | 31025 | 0 | 462 | 314 | 1590 | 50 | 7428 | 445 | 76 |
| 8 | 2026-09-09 | S101 rung G g4s (the 13 explained names, 38 classes: 3 of 38, 133 bodies) | 068781ae0 | 30892 | 18309 | 12583 | 10135 | 1737 | 30892 | 0 | 462 | 314 | 1590 | 50 | 7428 | 445 | 76 |
| 9 | 2026-09-09 | S101 rung G g5 (the head re-drawn wide: 5 of 70, 62 bodies) | 1ec67f667 | 30806 | 18261 | 12545 | 10073 | 1732 | 30806 | 0 | 462 | 314 | 1590 | 50 | 7428 | 445 | 76 |
| 10 | 2026-09-09 | S101 rung G g6 + g6b (the tail: 47 + 63 of 400 small classes, 93 + 186 + 47 bodies) | 2f3ce92a1 | 30358 | 17954 | 12404 | 9747 | 1624 | 30358 | 0 | 462 | 314 | 1590 | 50 | 7428 | 445 | 76 |
| 11 | 2026-09-10 | S102 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) | 5a8bd1021 | 30098 | 17694 | 12404 | 9617 | 1623 | 30098 | 0 | 462 | 314 | 1590 | 50 | 7428 | 445 | 76 |
| 12 | 2026-09-10 | S102 T7 s1 — the R15 sweep of the head: 6 exemplars closed by the sink alone (267 bodies), no drafting tokens | 861dd0651 | 29697 | 17427 | 12270 | 9350 | 1617 | 29697 | 0 | 462 | 314 | 1590 | 50 | 7428 | 445 | 76 |
| 13 | 2026-09-10 | S102 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) | c00ffe5d4 | 29572 | 17302 | 12270 | 9350 | 1617 | 29572 | 0 | 462 | 314 | 1590 | 50 | 7428 | 445 | 76 |
| 14 | 2026-09-10 | S102 T7 s3 (partial, the run crashed in propagate) — the constant-holder draw: 10 bodies closed | 975850ff8 | 29533 | 17266 | 12267 | 9326 | 1594 | 29533 | 0 | 462 | 314 | 1590 | 50 | 7428 | 445 | 76 |
| 15 | 2026-09-10 | S102 T7 s3b — the constant-holder draw re-run after the propagate fix: 1 of 80, 6 bodies; 59 of 80 hit the compile budget | 5603a114c | 29527 | 17260 | 12267 | 9320 | 1593 | 29527 | 0 | 462 | 314 | 1590 | 50 | 7428 | 445 | 76 |
| 16 | 2026-09-10 | S102 T7 s5 — the first broad TAIL sweep with R15/R16/R17/R18: 285 of 800 bodies closed lever-free, no drafting tokens | 449acd8cb | 29204 | 17029 | 12175 | 9035 | 1308 | 29204 | 0 | 462 | 314 | 1590 | 50 | 7428 | 445 | 76 |
| 17 | 2026-09-10 | S102 T7 s6 — the last never-attempted exemplars: 25 of 337; the fresh pool is now empty | 67e91ad4d | 29148 | 16996 | 12152 | 9010 | 1283 | 29148 | 0 | 462 | 314 | 1590 | 50 | 7428 | 445 | 76 |
| 18 | 2026-09-10 | S102 T7 s7 (stopped early to restore agent cadence) — 5 of 207 judged at the wider width | 724c68859 | 29140 | 16989 | 12151 | 9005 | 1280 | 29140 | 0 | 462 | 314 | 1590 | 50 | 7428 | 445 | 76 |
| 19 | 2026-09-10 | S102 T7 a7 — func_801287B8: a truncated local extern was faking a pin; the missing call argument restored through a function-pointer cast (127 bodies) | bb0e95c7c | 29013 | 16862 | 12151 | 8878 | 1279 | 29013 | 0 | 462 | 314 | 1590 | 50 | 7428 | 445 | 76 |
| 20 | 2026-09-10 | S102 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) | 9f5b22176 | 28887 | 16736 | 12151 | 8752 | 1278 | 28887 | 0 | 462 | 314 | 1590 | 50 | 7428 | 445 | 76 |
| 21 | 2026-09-10 | S102 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 split | fb6c857f7 | 27984 | 15965 | 12019 | 8249 | 1275 | 27984 | 0 | 462 | 314 | 1590 | 50 | 7428 | 445 | 76 |
| 22 | 2026-09-10 | S102 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) | c6b380fcd | 26714 | 15324 | 11390 | 7612 | 1271 | 26714 | 0 | 462 | 314 | 1590 | 50 | 7428 | 445 | 76 |
| 23 | 2026-09-10 | S102 T7 burst — a22 banked (126); a14 REFUSED as an invented zero term; a6/a10/a15 read without closing | 374c8a0e9 | 26462 | 15198 | 11264 | 7486 | 1270 | 26462 | 0 | 462 | 314 | 1590 | 50 | 7428 | 445 | 76 |