diff --git a/runtime/platform/compiler.h b/runtime/platform/compiler.h index c7bf4b7de1e..53bc2b827da 100644 --- a/runtime/platform/compiler.h +++ b/runtime/platform/compiler.h @@ -55,8 +55,27 @@ */ #define ET_NORETURN [[noreturn]] + +#ifdef _MSC_VER +#define ET_NOINLINE __declspec(noinline) +#else #define ET_NOINLINE __attribute__((noinline)) +#endif + #define ET_INLINE __attribute__((always_inline)) inline + +#ifdef _MSC_VER +#define ET_ALWAYS_INLINE __forceinline +#else +#define ET_ALWAYS_INLINE inline __attribute__((always_inline)) +#endif + +#ifdef _MSC_VER +#define ET_RESTRICT __restrict +#else +#define ET_RESTRICT __restrict__ +#endif + #define ET_INLINE_ATTRIBUTE __attribute__((always_inline)) #if defined(__GNUC__) @@ -173,6 +192,14 @@ using ssize_t = ptrdiff_t; #endif +#ifdef _MSC_VER +// MSVC has issues passing static constexpr const char names as template +// parameter +#define ET_OP_NAME_SPECIFIER +#else +#define ET_OP_NAME_SPECIFIER constexpr +#endif + #ifdef __EXCEPTIONS #define ET_HAS_EXCEPTIONS 1 #elif defined(_MSC_VER) && defined(_HAS_EXCEPTIONS) && _HAS_EXCEPTIONS