x86: lj_math_random_step() clobbers XMM regs on OSX Clang.

This commit is contained in:
Mike Pall 2014-06-11 22:44:08 +02:00
parent e7c6a1afa2
commit 7dc9e5ade4

View File

@ -86,6 +86,12 @@ typedef struct CCallInfo {
#define IRCALLCOND_FFI32(x) NULL #define IRCALLCOND_FFI32(x) NULL
#endif #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 #if LJ_SOFTFP
#define ARG1_FP 2 /* Treat as 2 32 bit arguments. */ #define ARG1_FP 2 /* Treat as 2 32 bit arguments. */
#else #else
@ -112,7 +118,7 @@ typedef struct CCallInfo {
_(ANY, lj_gc_step_jit, 2, FS, NIL, CCI_L) \ _(ANY, lj_gc_step_jit, 2, FS, NIL, CCI_L) \
_(ANY, lj_gc_barrieruv, 2, FS, NIL, 0) \ _(ANY, lj_gc_barrieruv, 2, FS, NIL, 0) \
_(ANY, lj_mem_newgco, 2, FS, P32, CCI_L) \ _(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, lj_vm_modi, 2, FN, INT, 0) \
_(ANY, sinh, ARG1_FP, N, NUM, 0) \ _(ANY, sinh, ARG1_FP, N, NUM, 0) \
_(ANY, cosh, ARG1_FP, N, NUM, 0) \ _(ANY, cosh, ARG1_FP, N, NUM, 0) \