mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-26 13:33:34 -04:00
5ce3704e21
§422 (resident/func_800D06E8, 344 ins): mips.h has no PROMOTE_MODE, so a u8 local is really QImode - `(u8)(c-3) < 2` gives widen_operand a paradoxical subreg (raw $a0) and combine.c:9246 drops the truncation before the sltiu, while `(u32)(c-3)` re-widens and loses it. And `s1 = (cmp) ^ 1` puts the comparison in the destination pseudo; the flag needs its own temp. §423 (ov_SC03_092/func_8017FA74): match_one closeness 0 + gate reject + "cause not determined" has a checkable cause. harvest_verify splices the draft where the INCLUDE_ASM stub was; a file-scope typedef the TU also defines (five lines below, here) makes gcc-2.7.2 exit 33 on a C89 redefinition, the TU fails, the gate reverts, and nothing names the typedef. Fix is block scope, proven with a three-way control. Mirror of §409 law 2 - together they cover collisions above and below the splice point. Tool trap: a scratch TU copy needs -Isrc/<overlay> or cpp exits 1 on the relative engine_core.h include and EVERY variant passes identically.