mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-08 09:43:04 -04:00
1.1 KiB
1.1 KiB
§337 — THE CC1-ONLY BLOCKER CLASS: blocker_probe's STATIC ORACLE REPORTS "none" AND THE WHOLE-TU COMPILE STILL FAILS (P31 S67; ov_SC04_011/func_801827DC, md_MAIN_027/func_800CB4A4)
Two byte-correct bodies this wave were rejected for declaration conflicts the STATIC analyzer could
not see, and it said so — blocker "none" — while real cc1 died:
func_801827DC— the TU declaresextern void *D_80194500[]at file scope (line 6005) and the draft redeclared it[][3]. Fixed with the TU's own §183__asm__-label alias (extern void *a4500[][3] __asm__("D_80194500");), preserving the 2-D index shape.func_800CB4A4— the draft'stypedef ... Blk8;collides with one atmd_MAIN_027.c:314, which sits AFTER the INCLUDE_ASM site. Fixed by dropping the typedef and adopting the TU's house spelling (memcpy((void*)(s3+0x154), &D_800CC298[0], 8)). The lesson is about the oracle, not the drafts: a "none" from the static analyzer is not evidence of no blocker — it is evidence the analyzer is blind here (R34). Always finish on the real whole-TU compile.