From 3abdb713474bd282b9ce322abf7ec3609af2eb12 Mon Sep 17 00:00:00 2001 From: lemon Date: Tue, 20 Jun 2023 19:05:00 +0200 Subject: fix regression wiht ret args not being fixed --- amd64/isel.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'amd64/isel.c') diff --git a/amd64/isel.c b/amd64/isel.c index 3c0b9e7..2273c99 100644 --- a/amd64/isel.c +++ b/amd64/isel.c @@ -382,12 +382,17 @@ seljmp(struct function *fn, struct block *blk) } } else if (blk->jmp.t == Jret) { if (blk->jmp.arg[0].t) { + int curi; union ref r = mkref(RREG, fn->abiret[0].reg); - insertinstr(blk, blk->ins.n, mkinstr(Omove, fn->abiret[0].ty.cls, r , blk->jmp.arg[0])); + struct instr *ins = &instrtab[insertinstr(blk, blk->ins.n, mkinstr(Omove, fn->abiret[0].ty.cls, r , blk->jmp.arg[0])).i]; + curi = blk->ins.n; + fixarg(&ins->r, ins, blk, &curi); blk->jmp.arg[0] = r; if (blk->jmp.arg[1].t) { r = mkref(RREG, fn->abiret[1].reg); - insertinstr(blk, blk->ins.n, mkinstr(Omove, fn->abiret[1].ty.cls, r, blk->jmp.arg[1])); + ins = &instrtab[insertinstr(blk, blk->ins.n, mkinstr(Omove, fn->abiret[1].ty.cls, r, blk->jmp.arg[1])).i]; + curi = blk->ins.n; + fixarg(&ins->r, ins, blk, &curi); blk->jmp.arg[1] = r; } } -- cgit v1.2.3