mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-05 17:03:23 -04:00
3.2 KiB
3.2 KiB
Considered and NOT banked
| Rejected | Why |
|---|---|
| §70's "walk the parameter directly" direction (L5639) | Already banked. Kept only as the explicit contrast note inside §179-A, which is its mirror — a future agent needs both directions side by side to choose. |
__asm__ __volatile__("" ::: "memory") as a CSE defeat |
Already banked at L1816-1819 (§21) and L13300, and §178-G2 already warns it is a full barrier. Deliberately stripped from the §179-H lever description. |
"=r"(x) : "0"(x) as an address-rematerialisation launder |
Already banked near-verbatim as §153 (L10463, "THE ADDRESS-REMATERIALISATION LAUNDER"). Note: §179-A uses the same instrument against a different governing predicate (valid_initial_value_p, not cse's qty_const), so only that new application is banked. |
≤2*MAX_MOVE_BYTES single movstrsi_internal copies; -O0 memcpy library call |
Already banked at L2428 and L2531. §179-E covers only the >2*MAX_MOVE_BYTES loop-with-remainder shape. |
The trampoline's three maspsx rules (no nop after jal; %%hi/%%lo escaping; no trailing .set reorder) |
Already banked at L1848-1858. The third one is contradicted by wave P/Q, so §179-B carries the conflict-resolution note rather than a restatement. |
maspsx "forces noreorder per function" (the func_80185B44 vetting note, __init__.py:857-859) |
Already banked — but it is misleading on its own, since .ent does not update self.is_reorder. §179-B rule 2 corrects it rather than re-banking it. |
| Everything in §174–§178 and §176a–§176j | Excluded by instruction: PsyQ names, match_one relocation masking, statement order around a call, pins-cannot-cross-a-call, declaration form as a scheduling lever, the $0-add opaque copy, return-const priority, birthing_insn_p, narrow-type copy elision, the zero-offset alias hole, MEM_IN_STRUCT_P, mips_epilogue_delay_slots. Several readers surfaced near-restatements of these; all dropped. |
§177's epilogue return-delay-slot class (mips.c:5376, L17156) |
Adjacent but genuinely different: that is a within-function scheduling gate steerable by callee-saved count. §179-C is a cross-function frame-sharing phenomenon with no compiler pass involved at all. Both kept, neither merged. |
The raw findings' loop.c:3571 giv-skip citation |
⚠ Corrected, not dropped — the test is at :3572-3573. |
The raw findings' loop.c:3499 SET_SRC citation |
⚠ Corrected to :3500 (the valid_initial_value_p call at :3509 and bl->initial_value = src at :3511 both check out exactly). |
"func_8005A9FC0" |
⚠ Typo in the raw finding; the real symbol is func_80059FC0 (confirmed from the draft path and asm/nonmatchings/800c/func_80059FC0.s). Banked under the correct name in §179-C. |
"expand_function_end unconditionally appends, with no noreturn guard" |
Softened. function.c:5224 and the return emission at :5432-5437 are confirmed present, and function_epilogue (mips.c:5072) is the final-time emitter — but the "no guard anywhere on the path" claim was not traced line-by-line. §179-C states the observable (three byte-proofs) and cites the location, not a derived proof. |