Files
BFM-decomp/config
Drew T dee33412db feat(phase-30 S43): func_8018D98C banked (710 ins) + §153 the address-rematerialisation launder [R22 PENDING]
- func_8018D98C (ov_SC06_033, 710 ins): MATCH, gated, carved into its own split
  (src/ov_SC06_033/ov_SC06_033_jr_8018D98C.c); image matches its locked SHA; stub gone.
  NOT a family — `find asm -name func_8018D98C.s` returns exactly one file, so this banks 1x710.
  The prompt's "renderer sibling" premise was wrong: it is a 12-state entity state machine over
  jtbl_801CF234; func_8017C6F4's C shares nothing with it. Structurally exact on the first draft.
- §153 THE ADDRESS-REMATERIALISATION LAUNDER (third zero-emission asm lever, after §148-C's allocno
  numerator and §151's blocked scheduler tick): an `&SYM` used as an argument >=2x in ONE cse basic
  block gets its pseudos unified (4 refs), so local-alloc.c:1080's remat path (needs reg_n_refs==2)
  never fires and global.c:388 hands it a CALLEE-SAVED register, cascading a rename. 14 probes prove
  no respelling reaches it (do/while splits cse1; cse2 puts it back). Cure, zero bytes, one per site
  in its own block: `{ s32 _m = (s32)&SYM; __asm__ __volatile__("" : "=r"(_m) : "0"(_m)); f(x,_m,y); }`
  — the volatile asm is never entered in cse's table AND sets _m, emptying the equivalence class.
  Placement is load-bearing (#APP is a scheduling barrier); with two address args, launder BOTH.
- INTEGRATION CAUTION: the agent's TU-CONFORMED variant gated DIFF while the PLAIN one banked.
  rtu_match MATCHing does not promise a decl-rewritten variant survives the real build — gate the
  plain variant first.
- R22 clean-fleet still owed (one agent remains on asm/); this and the 12 family banks are
  incremental-gated (§130) until it runs.
2026-08-05 18:23:54 -06:00
..