diff --git a/docs/cookbook-index.md b/docs/cookbook-index.md index 8ee46edbc5..7587332910 100644 --- a/docs/cookbook-index.md +++ b/docs/cookbook-index.md @@ -2,7 +2,7 @@ > **Generated by `tools/cookbook_index.py` — do not hand-edit** (R33). Regenerate after adding a cookbook section. > -> `docs/matching-cookbook.md` is ~716 KB / 1125 sections. Grepping it blind is how three P30 wave-1 agents each "discovered" an idiom that was already written down. **Start here, then read the section.** A section appears under every symptom it addresses. +> `docs/matching-cookbook.md` is ~716 KB / 1151 sections. Grepping it blind is how three P30 wave-1 agents each "discovered" an idiom that was already written down. **Start here, then read the section.** A section appears under every symptom it addresses. **How to use:** name what you SEE in the diff (a stolen delay slot, an extra `la`, a swapped register pair, a `conflicting types` error), find that symptom below, read those sections first. If nothing fits, THEN grind — and add a section when you win. @@ -103,7 +103,7 @@ - **§396g** — ★★ — A GUARD LADDER'S RUNGS MUST STAY SYMMETRIC OR `reorg.c` LOSES ITS BRANCH REDIRECT (P31 S69; byte-proven ov_SC03_028/func_80184C90, 92 ins) L32818 - **§428** — ★★★ — A ZERO-BYTE CROSS-JUMP BARRIER: ADVANCE THE POINTER INSIDE EACH SWITCH ARM (P31 S72; `main/func_80026D64`, 218 ins, MATCH in 2 compiles) L33954 -### instruction scheduling (90) +### instruction scheduling (99) - **§3-T2** — Source statement order drives instruction scheduling L78 - **§3** — When a diff is pure scheduling → decomp-permuter (harness built, Phase 6) L107 @@ -195,8 +195,17 @@ - **§428** — ★★★ — A ZERO-BYTE CROSS-JUMP BARRIER: ADVANCE THE POINTER INSIDE EACH SWITCH ARM (P31 S72; `main/func_80026D64`, 218 ins, MATCH in 2 compiles) L33954 - **§430** — ★★★ — A GOTO INTO A LOOP IS FINE; HAND-HOIST THE CONSTANTS IT COSTS YOU (P31 S73 — **this section previously said the OPPOSITE and was wrong; the refutation is kept below**) L34073 - **§3-A.** — `reg_n_sets` IS A ONE-LINE SCHEDULING DIAL — `t = t + 1;` vs `*p = t + 1` (CONFIRMED: `ov_SC03_105:func_80180ABC`, 257 ins, banked from closeness 250) L34946 +- **CORRECTION** — to §182/§188 (P31 S76) — THE EPILOGUE "WALL" IS AN ORACLE ARTIFACT IN THE REORDER ISLAND L35182 +- **§460** — `-dS` PRINTS THE SCHEDULER'S READY LIST WITH PRIORITIES. STOP INFERRING IT FROM RTL ORDER. L35222 +- **§465** — THE ASPSX SLOT-HOP: A GAP OUR REORDER SUBSTITUTE CANNOT CLOSE (`main:func_8005F830`) L35284 +- **§464** — FOUR VOLATILE/BARRIER LEVERS FROM `main:func_8005DE78` (141 ins → MATCH) L35328 +- **§470** — FOUR CSE/SCHED LEVERS FROM `main:func_800301C8` (170 ins, 133 → 18) L35437 +- **§472** — 🔴 §148-A's HOIST THRESHOLD IS 29, NOT 58, WHEN THE LOOP CONTAINS A CALL L35489 +- **§475** — THE `"memory"` FENCE AS A *CSE INVALIDATOR*, AND `(b*3)<<3` INSTEAD OF `b*24` L35581 +- **§476** — 🔴 A HARD-REGISTER PIN DESTROYS TWO THINGS COMBINE AND SCHED1 NEED (`func_800226C0`, 670 ins → MATCH) L35612 +- **§482** — ★★★ — TWO INDEPENDENT RE-TIES, ORDERED: WHEN ONE BARRIER FIXES ONE RESIDUAL AND CREATES THE OTHER (P31 S77, `main:func_8006252C`, 30 ins → MATCH) L35932 -### register allocation & pins (131) +### register allocation & pins (137) - **§10** — Closing the regalloc/scheduling hard tail by hand (LZSS, Phase 7 session F — the full close) L854 - **Residual** — A — commutative `|`/`&`/`+` result lands in the wrong source-operand register L875 @@ -329,8 +338,14 @@ - **§410** — ★★★ — COPY THEN ACCUMULATE ON THE COPY: resolving the birthing-boost vs register-allocation dilemma (P31 S71; byte-proven `ov_SC04_015/func_8017EB78`, 98 ins) L33353 - **§417** — ★★★ — A REGISTER PIN CAN BLOCK `jump.c`'s SELECT COLLAPSE, AND UNPINNING THEN EXPOSES A `cse` SKIP-BLOCKS MERGE (P31 S71; byte-proven `ov_SC03_013/func_8017E6F4`, 182 ins) L33605 - **§419** — ★★★ — WHEN A PIN IS IMPOSSIBLE, WIN THE local-alloc DENSITY CONTEST INSTEAD (P31 S71; byte-proven `ov_SC01_000/func_8017DD04`, 297 ins) L33658 +- **§467** — GLOBAL-ALLOC TIES BREAK ON *DECLARATION* ORDER, AND A COPIED CLOBBER LIST IS A DEFECT L35356 +- **§469** — THE `MEM_IN_STRUCT_P` ALIAS UNLOCK (and §463's spill law, independently confirmed) L35414 +- **§471** — A LAUNDER'S REAL COST IS AN ALLOCNO, AND `$t0` IS RELOAD'S (`main:func_80032A74`, 408 → 12) L35465 +- **§476** — 🔴 A HARD-REGISTER PIN DESTROYS TWO THINGS COMBINE AND SCHED1 NEED (`func_800226C0`, 670 ins → MATCH) L35612 +- **§463** — 🔴 SPILL SLOTS ARE 8 BYTES, AND THE §41b "LOAD ABOVE THE PROLOGUE" WALL IS REFUTED L35677 +- **§478** — 🔴 — A VERBATIM DRAFT IS THE STRONGEST *FALSE* SIGNAL YOUR SCOPING TOOL CAN EMIT L35787 -### CSE / redundancy / rematerialization (46) +### CSE / redundancy / rematerialization (50) - **§46** — The `func_80178D40` crack (890 ins ×134, the heaviest core in the game): four LOOP-STRUCTURE levers cheap-Opus found by reading loop.c/jump.c/cse.c (Phase 26 session 8, 2026-07-13) L3347 - **§83d** — CSE's quantity budget is WHOLE-FUNCTION, so a local rewrite cannot fix a local symptom L6486 @@ -378,8 +393,12 @@ - **§385** — ★★★ — THE **SCHED2 PRIORITY-DONOR ASM**: closing the "hoisted-invariant vs IV-init preheader swap" class (P31 S69; byte-proven main/func_80038A58, 347 ins, fable escalation 2 → 0) L32309 - **§417** — ★★★ — A REGISTER PIN CAN BLOCK `jump.c`'s SELECT COLLAPSE, AND UNPINNING THEN EXPOSES A `cse` SKIP-BLOCKS MERGE (P31 S71; byte-proven `ov_SC03_013/func_8017E6F4`, 182 ins) L33605 - **§432** — ★★★ — DEFEAT cse's MERGE OF TWO IDENTICAL MASKS BY SPELLING ONE AS A SHIFT PAIR (P31 S72/S73; `main/func_8002DC68`, MATCH 198/198) L34217 +- **§461** — LAUNDERING AN INVARIANT CAN BE THE DEFECT, AND "RESIDUAL A" DOES NOT GENERALIZE PAST ONE BINARY OP L35254 +- **§464** — FOUR VOLATILE/BARRIER LEVERS FROM `main:func_8005DE78` (141 ins → MATCH) L35328 +- **§470** — FOUR CSE/SCHED LEVERS FROM `main:func_800301C8` (170 ins, 133 → 18) L35437 +- **§475** — THE `"memory"` FENCE AS A *CSE INVALIDATOR*, AND `(b*3)<<3` INSTEAD OF `b*24` L35581 -### loops & induction variables (48) +### loops & induction variables (49) - **§3-T1** — Loop pointer: top-of-body for `addu` induction, not constant-folded `addiu` L71 - **§34** — The `func_80138ED0` giant crack: gcc-2.7.2's **3-qty sort bug** + the **zero-byte asm allocation toolkit** + the **giv-init fence** (Phase 24 T5; Opus→close=21, Fable5→MATCH ×134) L2473 @@ -429,8 +448,9 @@ - **§393** — ★★ — THE **BIRTHING BOOST**: A SINGLE-SET LOCAL IS SCHEDULED LAST; GIVE IT A SECOND SET (P31 S69; byte-proven ov_SC02_017/func_8017FCFC) L32543 - **§418** — ★★★ — TWO LOOP-STRUCTURE LEVERS: MAKE THE SECOND INDEX A GIV, AND KEEP A TABLE ADDRESS UNFOLDED (P31 S71; byte-proven `ov_SC04_016/func_8017DF8C`, 184 ins, 32 → 0 in seven compiles) L33632 - **§430** — ★★★ — A GOTO INTO A LOOP IS FINE; HAND-HOIST THE CONSTANTS IT COSTS YOU (P31 S73 — **this section previously said the OPPOSITE and was wrong; the refutation is kept below**) L34073 +- **§472** — 🔴 §148-A's HOIST THRESHOLD IS 29, NOT 58, WHEN THE LOOP CONTAINS A CALL L35489 -### structs, block moves & memcpy (89) +### structs, block moves & memcpy (91) - **§3-T2** — Source statement order drives instruction scheduling L78 - **§5** — Known hard-residual classes (instruction-identical, one byte-exact blocker) L199 @@ -521,8 +541,10 @@ - **§418** — ★★★ — TWO LOOP-STRUCTURE LEVERS: MAKE THE SECOND INDEX A GIV, AND KEEP A TABLE ADDRESS UNFOLDED (P31 S71; byte-proven `ov_SC04_016/func_8017DF8C`, 184 ins, 32 → 0 in seven compiles) L33632 - **§425** — ★★★ — `sb` ALIASES SCALAR GLOBALS WHILE `sh`/`sw` STRUCT STORES DO NOT, AND TWO MORE ALIAS/BOOST RULES (P31 S71; `md_MAIN_003/func_800CF3E8`, 467 of 469 ins, all four byte-verified from `-dS`/`-dR`/`-dl`/`-dr`) L33829 - **§442** — ★★★ — A RECOVERY RUNG THAT REWRITES A LEGAL CONSTRUCT INTO AN ILLEGAL ONE READS EXACTLY LIKE A CODEGEN WALL (P31 S75; `reconcile_tu`, 344 ins unblocked) L34647 +- **§468** — THE `%lo`-FOLD EXTENDS TO STORES ONLY VIA `extern Struct SYM[]`, AND MASKING HID THE OPERAND ORDER L35380 +- **§469** — THE `MEM_IN_STRUCT_P` ALIAS UNLOCK (and §463's spill law, independently confirmed) L35414 -### types, signedness & load/store width (95) +### types, signedness & load/store width (96) - **§3-I1** — Unsigned range check: `(x - lo) < (hi-lo)` → `addiu`+`sltiu` L41 - **§3-I2** — Byte mask forces `andi` even after `lbu` L47 @@ -619,8 +641,9 @@ - **§392** — ★★★ — THE SONNET-WAVE HARVEST (P31 S69): SEVEN TYPE/ORDER LEVERS THAT EACH CLOSED A MATCH L32502 - **§422** — ★★ — QImode ARITHMETIC VIA `(u8)(x - K)`, AND `flag ^ 1` NEEDS ITS OWN TEMP (P31 S71; byte-proven `resident/func_800D06E8`, 344 ins) L33760 - **§423** — ★★★ — "MATCH IN ISOLATION + GATE REJECTS + CAUSE NOT DETERMINED" ⇒ GREP THE TU FOR A FILE-SCOPE TYPEDEF THE DRAFT ALSO CARRIES (P31 S71; byte-proven `ov_SC03_092/func_8017FA74`) L33780 +- **§481** — ★★★ — `conflicting types` IS A SAME-SCOPE ERROR; ACROSS SCOPES IT IS ONLY A WARNING (P31 S77, `main:func_8001FC08`, 400 ins) L35901 -### declarations, prototypes & K&R (116) +### declarations, prototypes & K&R (120) - **§3-T4** — Branch polarity: invert the source condition to flip gcc's chosen branch L90 - **§8c** — Splitting a TU means rebuilding its DECLARATION ENVIRONMENT, not moving text (Phase 26 session 6) L456 @@ -738,6 +761,10 @@ - **§415** — ★★ — A FILE-SCOPE DECL MAKES gcc-2.7.2 MERGE THE TU'S LATER *BLOCK-SCOPE* EXTERNS INTO IT (P31 S71; byte-proven `ov_SC04_011/func_80180B24`, 215 ins) L33547 - **§437** — ★★★ — A WRAPPED TRAILING COMMENT BROKE THE TU PARSER, AND THE §8b DECL LAYER WROTE `extern #define` (P31 S74; five independently-MATCHed jr bodies unblocked, `ov_SC06_029` byte-identical) L34421 - **§447** — ★★★ — THE BIGGEST FUNCTION LEFT IS A CARVE, AND THE VERDICT TOOL SAID "DECLARATIONS" (P31 S75; SaveLoadRoutine, 1,165 ins) L34854 +- **§467** — GLOBAL-ALLOC TIES BREAK ON *DECLARATION* ORDER, AND A COPIED CLOBBER LIST IS A DEFECT L35356 +- **§468** — THE `%lo`-FOLD EXTENDS TO STORES ONLY VIA `extern Struct SYM[]`, AND MASKING HID THE OPERAND ORDER L35380 +- **§477** — ★★★ — THE `self_decl_tu` CLASS IS A SOLVED, MECHANICAL LANE: 16 DRAFTS, 16 BANKS (P31 S77) L35713 +- **§481** — ★★★ — `conflicting types` IS A SAME-SCOPE ERROR; ACROSS SCOPES IT IS ONLY A WARNING (P31 S77, `main:func_8001FC08`, 400 ins) L35901 ### jump tables & switches (70) @@ -812,7 +839,7 @@ - **§3-B.** — A SINGLE-SET LOCAL'S VALUE IS VISIBLE AT A SWITCH JOIN, AND THAT ERASES A ZERO-EXTENSION (CONFIRMED: `ov_SC03_105:func_801806F8`, 241 ins, banked from closeness 235) L34975 - **§3-D.** — AN OFFLINE JTBL-RODATA PLACEMENT AUDIT (CLAIMED: `md_MAIN_034:func_800CB00C` — did NOT bank, and that is the point) L35008 -### optimisation level (-O0/-O2) (22) +### optimisation level (-O0/-O2) (24) - **§6** — Per-module optimization mixing — the -O0 boot module (Phase 7) L265 - **Detecting** — the opt level (do this first) L273 @@ -836,6 +863,8 @@ - **Addendum** — Addendum to §164-XX/§165-06 — at -O0 a bare local IS a memory lvalue, so the increment ope (func_8001212C) L30477 - **§362** — TWO TRAPS WHEN A CARVE MOVES A STUB INTO THE `-O0` TU (P31 S68; byte-proven, 6 fns / 2,547 ins across ov_MAIN_012 / ov_SC02_037 / ov_SC03_107) L31682 - **§388** — ★★★ — THE **-O0 COLOURING ORACLE**: simulate `stupid.c` instead of grinding spellings (P31 S69; main/func_80011380 proved a C-level WALL at 6) L32384 +- **§466** — `main` (509 ins, -O0): ADDRESS CONTEXT EMITS `mult` INDEX-FIRST L35310 +- **§474** — A *PROVED* C-LEVEL FLOOR: `split_tree` + `stupid.c` (-O0), from `main:func_80011380` L35544 ### family propagation & sweeps (123) @@ -963,7 +992,7 @@ - **§421** — ★★★ — A `la $tN` + `addiu` PAIR CAN BE A **RELOAD** ARTIFACT THAT NO C SPELLING REACHES (P31 S71; byte-proven `md_SC07_003/func_801A293C`, 313 ins, 6 → 0) L33729 - **§446** — ★★★ — "RELOC-ONLY REMAP GATED DIFF" IS A CARVE VERDICT, NOT A CODEGEN VERDICT, UNTIL YOU DIFF THE `.text` (P31 S75; 4 siblings + 1 latent, ~1,300 ins) L34807 -### integration / TU plumbing (82) +### integration / TU plumbing (83) - **§8c** — Splitting a TU means rebuilding its DECLARATION ENVIRONMENT, not moving text (Phase 26 session 6) L456 - **§8d** — Templating a body INTO a TU must not CHANGE its declaration environment — demote the carried data externs (Phase 26 session 8, byte-proven on `func_8015AE2C` ×133) L502 @@ -1047,8 +1076,9 @@ - **§437** — ★★★ — A WRAPPED TRAILING COMMENT BROKE THE TU PARSER, AND THE §8b DECL LAYER WROTE `extern #define` (P31 S74; five independently-MATCHed jr bodies unblocked, `ov_SC06_029` byte-identical) L34421 - **§440** — ★★★ — A `.rodata` CARVE PIECE BINDS TO A SUBSEG, NOT TO A FUNCTION: EXTEND THE CARVE INSTEAD OF ISOLATING (P31 S74; 6 banked, resident included) L34576 - **§442** — ★★★ — A RECOVERY RUNG THAT REWRITES A LEGAL CONSTRUCT INTO AN ILLEGAL ONE READS EXACTLY LIKE A CODEGEN WALL (P31 S75; `reconcile_tu`, 344 ins unblocked) L34647 +- **§477** — ★★★ — THE `self_decl_tu` CLASS IS A SOLVED, MECHANICAL LANE: 16 DRAFTS, 16 BANKS (P31 S77) L35713 -### build graph, splat & the harness (200) +### build graph, splat & the harness (204) - **§4** — Flag/toolchain gotchas L190 - **Build** — mechanism — per-file opt override (splat resegmentation) L307 @@ -1250,8 +1280,12 @@ - **§446** — ★★★ — "RELOC-ONLY REMAP GATED DIFF" IS A CARVE VERDICT, NOT A CODEGEN VERDICT, UNTIL YOU DIFF THE `.text` (P31 S75; 4 siblings + 1 latent, ~1,300 ins) L34807 - **§447** — ★★★ — THE BIGGEST FUNCTION LEFT IS A CARVE, AND THE VERDICT TOOL SAID "DECLARATIONS" (P31 S75; SaveLoadRoutine, 1,165 ins) L34854 - **§449** — ★★★ — FOUR COMPILER DIALS FROM THE S75 REDRAFT WAVE (two byte-gate CONFIRMED, and one correction to §439) L34941 +- **ADDENDUM** — to §265 (P31 S76) — THE PROSE GUARD DID NOT HOLD. IT IS A GATE REFUSAL NOW. L35137 +- **CORRECTION** — to §182/§188 (P31 S76) — THE EPILOGUE "WALL" IS AN ORACLE ARTIFACT IN THE REORDER ISLAND L35182 +- **§478** — 🔴 — A VERBATIM DRAFT IS THE STRONGEST *FALSE* SIGNAL YOUR SCOPING TOOL CAN EMIT L35787 +- **§483** — ★★★ — THE S77w WAVE HARVEST: SIX LEVERS, FOUR FROM BANKED (BYTE-PROVEN) BODIES L35967 -### process, measurement & doctrine (137) +### process, measurement & doctrine (141) - **§8e** — The jtbl ALIGNMENT LAW + the pad-spec filter — multi-table .rodata spans (Phase 29, byte-proven; `.run/probe_jtbl/verdict.md`) L549 - **§3-The** — mechanism: game-code dedup is SOURCE-LEVEL, not an object swap (R-D1, the key lesson) L945 @@ -1390,8 +1424,12 @@ - **§439** — ★★ — LEVER SET FROM THE S74 WAVE (each entry is one measured crack, not a hypothesis) L34555 - **§449** — ★★★ — FOUR COMPILER DIALS FROM THE S75 REDRAFT WAVE (two byte-gate CONFIRMED, and one correction to §439) L34941 - **§3-C.** — CORRECTION TO §439 — `sll 16; srl 16` LANDS *AFTER* THE CALL, AND WORKS FOR A KNOWN CONSTANT L34990 +- **§469** — THE `MEM_IN_STRUCT_P` ALIAS UNLOCK (and §463's spill law, independently confirmed) L35414 +- **§473** — 🔴 §265's "HANDWRITTEN" VERDICT FOR `ov_SC07_002:func_8017DC80` IS REFUTED (324 → 89) L35519 +- **§463** — 🔴 SPILL SLOTS ARE 8 BYTES, AND THE §41b "LOAD ABOVE THE PROLOGUE" WALL IS REFUTED L35677 +- **§479** — ★★★ — WHERE THE PERMUTER ACTUALLY PAYS: A MEASURED YIELD CURVE (P31 S77, 8 candidates) L35807 -### (unbucketed — title matched no symptom vocabulary) (335) +### (unbucketed — title matched no symptom vocabulary) (337) - **§3-How** — to use this L30 - **§1** — Idiom catalog (asm pattern → C that produces it) L39 @@ -1728,6 +1766,8 @@ - **§450** — ★★★ — REGENERATING A TARGET `.s` FOR A FUNCTION THAT IS NO LONGER A STUB (P31 S75; 146 functions unblocked, two silent defects caught by ONE cross-check) L35021 - **§451** — ★★★ — YOUR EVIDENCE HAS MORE THAN ONE SOURCE, AND THE ONE YOU QUERY IS PROBABLY THE WORSE ONE (P31 S75; 37 functions reclassified, 122 ins banked from one word) L35062 - **§452** — ★★★ — NOT EVERY VERBATIM BODY IS UNDECOMPILED WORK, AND §448'S HEADLINE OVERSTATED IT (P31 S75; 10-function burst, 0 banks, and the negative result is the finding) L35100 +- **§462** — FOUR LEVERS FROM `main:func_80024054` (91 ins, 74/53/32 → 4) L35640 +- **§480** — 🔴 — A STATIC BLOCKER CLASS THAT THE REAL PIPELINE ALREADY REMOVES IS A PHANTOM L35886 ## All sections, in order @@ -2857,6 +2897,32 @@ - **§450** — ★★★ — REGENERATING A TARGET `.s` FOR A FUNCTION THAT IS NO LONGER A STUB (P31 S75; 146 functions unblocked, two silent defects caught by ONE cross-check) L35021 - **§451** — ★★★ — YOUR EVIDENCE HAS MORE THAN ONE SOURCE, AND THE ONE YOU QUERY IS PROBABLY THE WORSE ONE (P31 S75; 37 functions reclassified, 122 ins banked from one word) L35062 - **§452** — ★★★ — NOT EVERY VERBATIM BODY IS UNDECOMPILED WORK, AND §448'S HEADLINE OVERSTATED IT (P31 S75; 10-function burst, 0 banks, and the negative result is the finding) L35100 +- **ADDENDUM** — to §265 (P31 S76) — THE PROSE GUARD DID NOT HOLD. IT IS A GATE REFUSAL NOW. L35137 +- **CORRECTION** — to §182/§188 (P31 S76) — THE EPILOGUE "WALL" IS AN ORACLE ARTIFACT IN THE REORDER ISLAND L35182 +- **§460** — `-dS` PRINTS THE SCHEDULER'S READY LIST WITH PRIORITIES. STOP INFERRING IT FROM RTL ORDER. L35222 +- **§461** — LAUNDERING AN INVARIANT CAN BE THE DEFECT, AND "RESIDUAL A" DOES NOT GENERALIZE PAST ONE BINARY OP L35254 +- **§465** — THE ASPSX SLOT-HOP: A GAP OUR REORDER SUBSTITUTE CANNOT CLOSE (`main:func_8005F830`) L35284 +- **§466** — `main` (509 ins, -O0): ADDRESS CONTEXT EMITS `mult` INDEX-FIRST L35310 +- **§464** — FOUR VOLATILE/BARRIER LEVERS FROM `main:func_8005DE78` (141 ins → MATCH) L35328 +- **§467** — GLOBAL-ALLOC TIES BREAK ON *DECLARATION* ORDER, AND A COPIED CLOBBER LIST IS A DEFECT L35356 +- **§468** — THE `%lo`-FOLD EXTENDS TO STORES ONLY VIA `extern Struct SYM[]`, AND MASKING HID THE OPERAND ORDER L35380 +- **§469** — THE `MEM_IN_STRUCT_P` ALIAS UNLOCK (and §463's spill law, independently confirmed) L35414 +- **§470** — FOUR CSE/SCHED LEVERS FROM `main:func_800301C8` (170 ins, 133 → 18) L35437 +- **§471** — A LAUNDER'S REAL COST IS AN ALLOCNO, AND `$t0` IS RELOAD'S (`main:func_80032A74`, 408 → 12) L35465 +- **§472** — 🔴 §148-A's HOIST THRESHOLD IS 29, NOT 58, WHEN THE LOOP CONTAINS A CALL L35489 +- **§473** — 🔴 §265's "HANDWRITTEN" VERDICT FOR `ov_SC07_002:func_8017DC80` IS REFUTED (324 → 89) L35519 +- **§474** — A *PROVED* C-LEVEL FLOOR: `split_tree` + `stupid.c` (-O0), from `main:func_80011380` L35544 +- **§475** — THE `"memory"` FENCE AS A *CSE INVALIDATOR*, AND `(b*3)<<3` INSTEAD OF `b*24` L35581 +- **§476** — 🔴 A HARD-REGISTER PIN DESTROYS TWO THINGS COMBINE AND SCHED1 NEED (`func_800226C0`, 670 ins → MATCH) L35612 +- **§462** — FOUR LEVERS FROM `main:func_80024054` (91 ins, 74/53/32 → 4) L35640 +- **§463** — 🔴 SPILL SLOTS ARE 8 BYTES, AND THE §41b "LOAD ABOVE THE PROLOGUE" WALL IS REFUTED L35677 +- **§477** — ★★★ — THE `self_decl_tu` CLASS IS A SOLVED, MECHANICAL LANE: 16 DRAFTS, 16 BANKS (P31 S77) L35713 +- **§478** — 🔴 — A VERBATIM DRAFT IS THE STRONGEST *FALSE* SIGNAL YOUR SCOPING TOOL CAN EMIT L35787 +- **§479** — ★★★ — WHERE THE PERMUTER ACTUALLY PAYS: A MEASURED YIELD CURVE (P31 S77, 8 candidates) L35807 +- **§480** — 🔴 — A STATIC BLOCKER CLASS THAT THE REAL PIPELINE ALREADY REMOVES IS A PHANTOM L35886 +- **§481** — ★★★ — `conflicting types` IS A SAME-SCOPE ERROR; ACROSS SCOPES IT IS ONLY A WARNING (P31 S77, `main:func_8001FC08`, 400 ins) L35901 +- **§482** — ★★★ — TWO INDEPENDENT RE-TIES, ORDERED: WHEN ONE BARRIER FIXES ONE RESIDUAL AND CREATES THE OTHER (P31 S77, `main:func_8006252C`, 30 ins → MATCH) L35932 +- **§483** — ★★★ — THE S77w WAVE HARVEST: SIX LEVERS, FOUR FROM BANKED (BYTE-PROVEN) BODIES L35967 --- @@ -3994,3 +4060,29 @@ Notes routinely quote that as a section id. This table resolves it. Grep bait: ` | L35021 | §450 | ★★★ — REGENERATING A TARGET `.s` FOR A FUNCTION THAT IS NO LONGER A STUB (P31 S75; 146 fun | | L35062 | §451 | ★★★ — YOUR EVIDENCE HAS MORE THAN ONE SOURCE, AND THE ONE YOU QUERY IS PROBABLY THE WORSE | | L35100 | §452 | ★★★ — NOT EVERY VERBATIM BODY IS UNDECOMPILED WORK, AND §448'S HEADLINE OVERSTATED IT (P31 | +| L35137 | ADDENDUM | to §265 (P31 S76) — THE PROSE GUARD DID NOT HOLD. IT IS A GATE REFUSAL NOW. | +| L35182 | CORRECTION | to §182/§188 (P31 S76) — THE EPILOGUE "WALL" IS AN ORACLE ARTIFACT IN THE REORDER ISLAND | +| L35222 | §460 | `-dS` PRINTS THE SCHEDULER'S READY LIST WITH PRIORITIES. STOP INFERRING IT FROM RTL ORDER. | +| L35254 | §461 | LAUNDERING AN INVARIANT CAN BE THE DEFECT, AND "RESIDUAL A" DOES NOT GENERALIZE PAST ONE B | +| L35284 | §465 | THE ASPSX SLOT-HOP: A GAP OUR REORDER SUBSTITUTE CANNOT CLOSE (`main:func_8005F830`) | +| L35310 | §466 | `main` (509 ins, -O0): ADDRESS CONTEXT EMITS `mult` INDEX-FIRST | +| L35328 | §464 | FOUR VOLATILE/BARRIER LEVERS FROM `main:func_8005DE78` (141 ins → MATCH) | +| L35356 | §467 | GLOBAL-ALLOC TIES BREAK ON *DECLARATION* ORDER, AND A COPIED CLOBBER LIST IS A DEFECT | +| L35380 | §468 | THE `%lo`-FOLD EXTENDS TO STORES ONLY VIA `extern Struct SYM[]`, AND MASKING HID THE OPERA | +| L35414 | §469 | THE `MEM_IN_STRUCT_P` ALIAS UNLOCK (and §463's spill law, independently confirmed) | +| L35437 | §470 | FOUR CSE/SCHED LEVERS FROM `main:func_800301C8` (170 ins, 133 → 18) | +| L35465 | §471 | A LAUNDER'S REAL COST IS AN ALLOCNO, AND `$t0` IS RELOAD'S (`main:func_80032A74`, 408 → 12 | +| L35489 | §472 | 🔴 §148-A's HOIST THRESHOLD IS 29, NOT 58, WHEN THE LOOP CONTAINS A CALL | +| L35519 | §473 | 🔴 §265's "HANDWRITTEN" VERDICT FOR `ov_SC07_002:func_8017DC80` IS REFUTED (324 → 89) | +| L35544 | §474 | A *PROVED* C-LEVEL FLOOR: `split_tree` + `stupid.c` (-O0), from `main:func_80011380` | +| L35581 | §475 | THE `"memory"` FENCE AS A *CSE INVALIDATOR*, AND `(b*3)<<3` INSTEAD OF `b*24` | +| L35612 | §476 | 🔴 A HARD-REGISTER PIN DESTROYS TWO THINGS COMBINE AND SCHED1 NEED (`func_800226C0`, 670 in | +| L35640 | §462 | FOUR LEVERS FROM `main:func_80024054` (91 ins, 74/53/32 → 4) | +| L35677 | §463 | 🔴 SPILL SLOTS ARE 8 BYTES, AND THE §41b "LOAD ABOVE THE PROLOGUE" WALL IS REFUTED | +| L35713 | §477 | ★★★ — THE `self_decl_tu` CLASS IS A SOLVED, MECHANICAL LANE: 16 DRAFTS, 16 BANKS (P31 S77) | +| L35787 | §478 | 🔴 — A VERBATIM DRAFT IS THE STRONGEST *FALSE* SIGNAL YOUR SCOPING TOOL CAN EMIT | +| L35807 | §479 | ★★★ — WHERE THE PERMUTER ACTUALLY PAYS: A MEASURED YIELD CURVE (P31 S77, 8 candidates) | +| L35886 | §480 | 🔴 — A STATIC BLOCKER CLASS THAT THE REAL PIPELINE ALREADY REMOVES IS A PHANTOM | +| L35901 | §481 | ★★★ — `conflicting types` IS A SAME-SCOPE ERROR; ACROSS SCOPES IT IS ONLY A WARNING (P31 S | +| L35932 | §482 | ★★★ — TWO INDEPENDENT RE-TIES, ORDERED: WHEN ONE BARRIER FIXES ONE RESIDUAL AND CREATES TH | +| L35967 | §483 | ★★★ — THE S77w WAVE HARVEST: SIX LEVERS, FOUR FROM BANKED (BYTE-PROVEN) BODIES | diff --git a/docs/difficulty.md b/docs/difficulty.md index 618de557ed..caa6769cbe 100644 --- a/docs/difficulty.md +++ b/docs/difficulty.md @@ -1,9 +1,9 @@ # Unmatched difficulty inventory (generated by tools/difficulty.py — harvest queue) -unmatched functions : 995 +unmatched functions : 989 trivial (<=5 ins) : 215 -non-jtbl leaves : 663 (best harvest targets) -jump-table funcs : 37 (deferred — need the rodata-island workflow, Task 2') +non-jtbl leaves : 661 (best harvest targets) +jump-table funcs : 36 (deferred — need the rodata-island workflow, Task 2') ## Easiest 120 unmatched (score asc) — the work queue | score | name | nins | br | calls | jtbl | leaf | diff --git a/docs/progress.md b/docs/progress.md index ec0047573c..9bd713005c 100644 --- a/docs/progress.md +++ b/docs/progress.md @@ -18,3 +18,5 @@ REAL matches: AverageZ3 CdQueueBusy CdReadRequest CdReadSectorReadyCB CdReadStat NON_MATCHING: build SHA1: 143dbb89f34491258bbc27810d0a12ec8b43a8dd (byte-identical) + +empties audit: 43/43 genuine jr;nop (all clean)