diff options
| author | 2023-06-13 10:55:35 +0200 | |
|---|---|---|
| committer | 2023-06-13 11:04:31 +0200 | |
| commit | 3e5c11563f8cb7c843c71a0f761e5b644f39db46 (patch) | |
| tree | 1192d4ba899b031ca99cf5a79fc814d98bed1e76 /abi0.c | |
| parent | 427d2298cd6f6e4da9a31c723a79a36267aebbc1 (diff) | |
lower allocas in isel() instead of emit() and misc fixes
Diffstat (limited to 'abi0.c')
| -rw-r--r-- | abi0.c | 10 |
1 files changed, 5 insertions, 5 deletions
@@ -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); } } |