mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-02-07 23:24:09 +00:00
Fix handling of alignment arguments (nil) to CALLX.
This commit is contained in:
parent
cb1dd159e3
commit
32098921fd
@ -1739,7 +1739,7 @@ static Reg asm_setup_call_slots(ASMState *as, IRIns *ir, const CCallInfo *ci)
|
|||||||
int nslots = 0, ngpr = REGARG_NUMGPR;
|
int nslots = 0, ngpr = REGARG_NUMGPR;
|
||||||
asm_collectargs(as, ir, ci, args);
|
asm_collectargs(as, ir, ci, args);
|
||||||
for (i = 0; i < nargs; i++)
|
for (i = 0; i < nargs; i++)
|
||||||
if (!LJ_SOFTFP && irt_isfp(IR(args[i])->t)) {
|
if (!LJ_SOFTFP && args[i] && irt_isnum(IR(args[i])->t)) {
|
||||||
ngpr &= ~1;
|
ngpr &= ~1;
|
||||||
if (ngpr > 0) ngpr -= 2; else nslots += 2;
|
if (ngpr > 0) ngpr -= 2; else nslots += 2;
|
||||||
} else {
|
} else {
|
||||||
|
@ -2618,7 +2618,7 @@ static Reg asm_setup_call_slots(ASMState *as, IRIns *ir, const CCallInfo *ci)
|
|||||||
uint32_t i;
|
uint32_t i;
|
||||||
int ngpr = 6, nfpr = 8;
|
int ngpr = 6, nfpr = 8;
|
||||||
for (i = 0; i < nargs; i++)
|
for (i = 0; i < nargs; i++)
|
||||||
if (irt_isfp(IR(args[i])->t)) {
|
if (args[i] && irt_isfp(IR(args[i])->t)) {
|
||||||
if (nfpr > 0) nfpr--; else nslots += 2;
|
if (nfpr > 0) nfpr--; else nslots += 2;
|
||||||
} else {
|
} else {
|
||||||
if (ngpr > 0) ngpr--; else nslots += 2;
|
if (ngpr > 0) ngpr--; else nslots += 2;
|
||||||
@ -2633,7 +2633,7 @@ static Reg asm_setup_call_slots(ASMState *as, IRIns *ir, const CCallInfo *ci)
|
|||||||
} else {
|
} else {
|
||||||
uint32_t i;
|
uint32_t i;
|
||||||
for (i = 0; i < nargs; i++)
|
for (i = 0; i < nargs; i++)
|
||||||
nslots += irt_isnum(IR(args[i])->t) ? 2 : 1;
|
nslots += (args[i] && irt_isnum(IR(args[i])->t)) ? 2 : 1;
|
||||||
if (nslots > as->evenspill) /* Leave room for args. */
|
if (nslots > as->evenspill) /* Leave room for args. */
|
||||||
as->evenspill = nslots;
|
as->evenspill = nslots;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user