mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-26 21:36:06 -04:00
bb34eac42f
Each one refused byte-verified work; each fix is probed, not reasoned: * built-in redeclaration: a cc1 probe shows two conflicting "memcpy" declarations give "warning: conflicting types for built-in function" + exit 0, while the same pair on a non-builtin name errors. Every overlay TU in the fleet declares memcpy twice and compiles today -> CONFLICTING-EXTERN on a builtin is now WARN. * driver mismatch: overlays bank via gate_lane -> gate_stage -> harvest_verify, which strips every typedef the target TU provides; pregate_check modelled gate_main's hoist/strip instead and reported DUPLICATE-TYPEDEF for exactly the duplicates the real gate removes. substitute() now takes an optional per-draft transform; pregate passes the overlay one. * block-scope typedefs: two functions may each declare their own typedef inside their bodies (that is how a draft stays self-contained for match_one). _typedefs now honours the brace depth map the caller already computed. * project scalar aliases: include/common.h's "typedef s32 M2C_UNK;" makes "extern s32 D_x" and "extern M2C_UNK D_x" the same declaration; _ALIASES now DERIVES those from common.h (R33). Measured on the 5 leftover slates: 28 drafts, all re-verified MATCH by match_one, went from "0 kept / phantom FAILs" to main 2 clean, ov_SC04_011 15 clean, ov_SC03_028 1 clean, ov_SC06_029 4 + 1 named TU edit, ov_SC02_005 2 real TYPEDEF-USED-ABOVE-DEFINITION.