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;
|
||||
asm_collectargs(as, ir, ci, args);
|
||||
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;
|
||||
if (ngpr > 0) ngpr -= 2; else nslots += 2;
|
||||
} else {
|
||||
|
@ -2618,7 +2618,7 @@ static Reg asm_setup_call_slots(ASMState *as, IRIns *ir, const CCallInfo *ci)
|
||||
uint32_t i;
|
||||
int ngpr = 6, nfpr = 8;
|
||||
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;
|
||||
} else {
|
||||
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 {
|
||||
uint32_t 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. */
|
||||
as->evenspill = nslots;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user