mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-27 14:02:04 -04:00
371a18b6de
From the S76 func_80039B20 agent (79 ins, prior best 16 -> 10). Two findings. A volatile-asm launder on the WRONG loop invariant displaced the address chain and cost an entire cluster (16 -> 81 with it present); the matched sibling func_8003A0E4 uses the plain idiom. Another invariant in the same loop genuinely needs its launder. So the lever is per-invariant, not per-loop, and it can go backwards. Scope correction to Residual A (L875): the first-dying-operand / source-order fix works on a SINGLE binary op and does NOT transfer to a PLUS chain — measured byte-identical output when swapping operands on a 3-term chain, because fold.c canonicalizes associative PLUS before combine sees it. Worth recording as a negative result so nobody re-derives it.