From 32098921fda08aad6d67efff20d2e1b31b92fa63 Mon Sep 17 00:00:00 2001
From: Mike Pall <mike>
Date: Mon, 24 Oct 2011 16:14:01 +0200
Subject: Fix handling of alignment arguments (nil) to CALLX.

---
 src/lj_asm_arm.h | 2 +-
 src/lj_asm_x86.h | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/lj_asm_arm.h b/src/lj_asm_arm.h
index 786dd831..1963f3ba 100644
--- a/src/lj_asm_arm.h
+++ b/src/lj_asm_arm.h
@@ -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 {
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)
     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;
   }
-- 
cgit v1.2.3-55-g6feb