Fix BC_MCALL

RC and RD are the same register on x64, so sometimes it uses them
interchangeably. Probably we should make them the same register
on s390x, but that would involve changing the instruction decode
code which I would rather leave until we have a test suite passing.
This commit is contained in:
Michael Munday 2016-12-22 12:41:00 -05:00
parent 1825037538
commit 6fc4c0c1a8

View File

@ -2057,6 +2057,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
case BC_CALL: case BC_CALLM:
| ins_A_C // RA = base, (RB = nresults+1,) RC = nargs+1 | extra_nargs
| lgr RD, RC
if (op == BC_CALLM) {
| ag NARGS:RD, SAVE_MULTRES // TODO: MULTRES is 32-bit on x64
}
@ -2064,7 +2065,6 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
| lg LFUNC:RB, 0(BASE, RA)
| checkfunc LFUNC:RB, ->vmeta_call_ra
| la BASE, 16(RA, BASE)
| lgr RD, RC
| ins_call
break;