]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
x86: lj_math_random_step() clobbers XMM regs on OSX Clang.
authorMike Pall <mike>
Wed, 11 Jun 2014 20:44:08 +0000 (22:44 +0200)
committerMike Pall <mike>
Wed, 11 Jun 2014 20:44:08 +0000 (22:44 +0200)
src/lj_ircall.h

index af30ba8fc97831acb5b94fc0dc4de7393a7d0888..92d61dfad8ed831536ecafb69a77a0afa80fba57 100644 (file)
@@ -86,6 +86,12 @@ typedef struct CCallInfo {
 #define IRCALLCOND_FFI32(x)            NULL
 #endif
 
+#if LJ_TARGET_X86
+#define CCI_RANDFPR    0       /* Clang on OSX/x86 is overzealous. */
+#else
+#define CCI_RANDFPR    CCI_NOFPRCLOBBER
+#endif
+
 #if LJ_SOFTFP
 #define ARG1_FP                2       /* Treat as 2 32 bit arguments. */
 #else
@@ -112,7 +118,7 @@ typedef struct CCallInfo {
   _(ANY,       lj_gc_step_jit,         2,  FS, NIL, CCI_L) \
   _(ANY,       lj_gc_barrieruv,        2,  FS, NIL, 0) \
   _(ANY,       lj_mem_newgco,          2,  FS, P32, CCI_L) \
-  _(ANY,       lj_math_random_step, 1, FS, NUM, CCI_CASTU64|CCI_NOFPRCLOBBER) \
+  _(ANY,       lj_math_random_step, 1, FS, NUM, CCI_CASTU64|CCI_RANDFPR)\
   _(ANY,       lj_vm_modi,             2,  FN, INT, 0) \
   _(ANY,       sinh,                   ARG1_FP,  N, NUM, 0) \
   _(ANY,       cosh,                   ARG1_FP,  N, NUM, 0) \