mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-26 13:33:34 -04:00
46cfd92e0b
Byte-proven on ov_SC03_013/func_8017E6F4 (182 ins). A pinned select arm expands as ior+copy (two insns), so jump.c:728's `x=b; if(c) x=a;` collapse cannot fire. Unpinning lets it fire - and then cse_end_of_basic_block's skip_blocks path walks between the two D_80184D2C[idx] reads and CSEs the symbol_ref into $s3. The earlier agent read that as "unpinning costs +2" and restored the pin, which re-blocked jump.c and hid the cse behaviour: the function plateaued for three attempts on that misattribution. The law: when removing a lever MOVES the residual instead of shrinking it, the new residual is a different pass. Attribute it with a pass dump before re-adding the lever.