diff options
Diffstat (limited to 'src/lj_asm_x86.h')
-rw-r--r-- | src/lj_asm_x86.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/lj_asm_x86.h b/src/lj_asm_x86.h index 6767e0c7..2edfe6e6 100644 --- a/src/lj_asm_x86.h +++ b/src/lj_asm_x86.h | |||
@@ -2618,7 +2618,7 @@ static Reg asm_setup_call_slots(ASMState *as, IRIns *ir, const CCallInfo *ci) | |||
2618 | uint32_t i; | 2618 | uint32_t i; |
2619 | int ngpr = 6, nfpr = 8; | 2619 | int ngpr = 6, nfpr = 8; |
2620 | for (i = 0; i < nargs; i++) | 2620 | for (i = 0; i < nargs; i++) |
2621 | if (irt_isfp(IR(args[i])->t)) { | 2621 | if (args[i] && irt_isfp(IR(args[i])->t)) { |
2622 | if (nfpr > 0) nfpr--; else nslots += 2; | 2622 | if (nfpr > 0) nfpr--; else nslots += 2; |
2623 | } else { | 2623 | } else { |
2624 | if (ngpr > 0) ngpr--; else nslots += 2; | 2624 | if (ngpr > 0) ngpr--; else nslots += 2; |
@@ -2633,7 +2633,7 @@ static Reg asm_setup_call_slots(ASMState *as, IRIns *ir, const CCallInfo *ci) | |||
2633 | } else { | 2633 | } else { |
2634 | uint32_t i; | 2634 | uint32_t i; |
2635 | for (i = 0; i < nargs; i++) | 2635 | for (i = 0; i < nargs; i++) |
2636 | nslots += irt_isnum(IR(args[i])->t) ? 2 : 1; | 2636 | nslots += (args[i] && irt_isnum(IR(args[i])->t)) ? 2 : 1; |
2637 | if (nslots > as->evenspill) /* Leave room for args. */ | 2637 | if (nslots > as->evenspill) /* Leave room for args. */ |
2638 | as->evenspill = nslots; | 2638 | as->evenspill = nslots; |
2639 | } | 2639 | } |