aboutsummaryrefslogtreecommitdiffhomepage
path: root/abi0.c
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2023-06-13 10:55:35 +0200
committerlemon <lsof@mailbox.org>2023-06-13 11:04:31 +0200
commit3e5c11563f8cb7c843c71a0f761e5b644f39db46 (patch)
tree1192d4ba899b031ca99cf5a79fc814d98bed1e76 /abi0.c
parent427d2298cd6f6e4da9a31c723a79a36267aebbc1 (diff)
lower allocas in isel() instead of emit() and misc fixes
Diffstat (limited to 'abi0.c')
-rw-r--r--abi0.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/abi0.c b/abi0.c
index 907ac12..314017b 100644
--- a/abi0.c
+++ b/abi0.c
@@ -71,10 +71,10 @@ copyparam(struct abiarg abi)
case KF4: ld = Oloadf4; break;
case KF8: ld = Oloadf8; break;
}
- vpush(&addrtab, ((struct addr) {.base = mkref(RREG, mctarg->fpr), .disp = abi.stk}));
+ vpush(&addrtab, ((struct addr) {.base = mkref(RREG, mctarg->bpr), .disp = -abi.stk}));
return mkinstr(ld, abi.ty.cls, mkref(RMORE, addrtab.n - 1));
} else { /* aggregate in stack */
- vpush(&addrtab, ((struct addr) {.base = mkref(RREG, mctarg->fpr), .disp = abi.stk}));
+ vpush(&addrtab, ((struct addr) {.base = mkref(RREG, mctarg->bpr), .disp = -abi.stk}));
return mkinstr(Ocopy, KPTR, mkref(RMORE, addrtab.n - 1));
}
}
@@ -361,7 +361,7 @@ abi0(struct function *fn)
union irtype typ = mkirtype(fn->retty);
insertinstr(blk, blk->ins.n, mkarginstr(typ, sret));
insertinstr(blk, blk->ins.n, mkarginstr(typ, blk->jmp.arg[0]));
- insertinstr(blk, blk->ins.n, mkintrin(fn, INstructcopy, 0, 2));
+ insertinstr(blk, blk->ins.n, mkintrin(INstructcopy, 0, 2));
} else assert(blk->jmp.arg[0].bits == mkref(RTMP, rvovar).bits);
if (fn->abiret[0].ty.cls) blk->jmp.arg[0] = rvovar == -1 ? sret : mkref(RTMP, rvovar);
else memset(blk->jmp.arg, 0, sizeof blk->jmp.arg);
@@ -383,8 +383,8 @@ abi0(struct function *fn)
} while ((blk = blk->lnext) != fn->entry);
if (ccopt.dbg.a) {
- efmt("after abi0:\n");
- irdump(fn, fn->name);
+ efmt("<< After abi0 >>\n");
+ irdump(fn);
}
}