phase-36: S104 s104_d38 — func_801818A4 banked at 0 through the whole-object gate + propagated — $16 pin → 0: the cast copy of the parameter deleted (cse.c:846-856 + the second pass :8352-8355 kept a copy that crossed the call)

This commit is contained in:
Drew T
2026-09-11 00:03:35 -06:00
parent c3023eee40
commit ac8bc32657
7 changed files with 387 additions and 193 deletions
+4 -5
View File
@@ -2631,18 +2631,17 @@ void func_80186AE0(void *a0) {
s32 func_80186B1C(void *a0, void *a1) {
s16 stack_buf[8];
register s16 *s0 __asm__("$16") = (s16 *)a1; // !FAKE: pin $16 — NEEDED DIFFERS (P36 rung B tus9)
s16 v0;
s32 result;
s32 ret;
v0 = s0[6];
v0 = ((s16 *)a1)[6];
stack_buf[2] = v0;
v0 = s0[7];
v0 = ((s16 *)a1)[7];
stack_buf[5] = 0;
stack_buf[1] = 0;
stack_buf[6] = v0;
v0 = s0[2];
v0 = ((s16 *)a1)[2];
stack_buf[4] = v0;
stack_buf[0] = v0;
@@ -2651,7 +2650,7 @@ s32 func_80186B1C(void *a0, void *a1) {
if (result != 0) {
ret = 1;
} else {
v0 = s0[3];
v0 = ((s16 *)a1)[3];
stack_buf[4] = v0;
stack_buf[0] = v0;
result = func_8012DEB8((s32)a0, (s32)&stack_buf[0], (s32)&stack_buf[4]);
+4 -5
View File
@@ -6451,18 +6451,17 @@ void func_80181868(void *a0) {
s32 func_801818A4(void *a0, void *a1) {
s16 stack_buf[8];
register s16 *s0 __asm__("$16") = (s16 *)a1; // !FAKE: pin $16 — NEEDED DIFFERS (P36 rung B tus7)
s16 v0;
s32 result;
s32 ret;
v0 = s0[6];
v0 = ((s16 *)a1)[6];
stack_buf[2] = v0;
v0 = s0[7];
v0 = ((s16 *)a1)[7];
stack_buf[5] = 0;
stack_buf[1] = 0;
stack_buf[6] = v0;
v0 = s0[2];
v0 = ((s16 *)a1)[2];
stack_buf[4] = v0;
stack_buf[0] = v0;
@@ -6471,7 +6470,7 @@ s32 func_801818A4(void *a0, void *a1) {
if (result != 0) {
ret = 1;
} else {
v0 = s0[3];
v0 = ((s16 *)a1)[3];
stack_buf[4] = v0;
stack_buf[0] = v0;
result = func_8012DEB8((s32)a0, (s32)&stack_buf[0], (s32)&stack_buf[4]);