diff options
author | Jani Hakala <[email protected]> | 2014-02-27 15:23:44 +0200 |
---|---|---|
committer | Jani Hakala <[email protected]> | 2014-02-28 11:05:13 +0200 |
commit | adb5dc0090bc419e2c4c1250653badbddeb6263b (patch) | |
tree | d7f304279daafc26ec5ed3093614afe1b8851b33 /erts/include/internal | |
parent | a74e66a68f3b4ed590f928b4fd4f0808c6287a32 (diff) | |
download | otp-adb5dc0090bc419e2c4c1250653badbddeb6263b.tar.gz otp-adb5dc0090bc419e2c4c1250653badbddeb6263b.tar.bz2 otp-adb5dc0090bc419e2c4c1250653badbddeb6263b.zip |
Add ETHR_FORCE_INLINE define to hide compiler specific directives
Some win32 specific code does not compile with gcc (mingw-w64) since
'__forceinline' is not supported by gcc. This can be avoided by
defining a new macro ETHR_FORCE_INLINE similar to ETHR_INLINE.
Diffstat (limited to 'erts/include/internal')
-rw-r--r-- | erts/include/internal/ethread.h | 3 | ||||
-rw-r--r-- | erts/include/internal/win/ethr_membar.h | 8 |
2 files changed, 7 insertions, 4 deletions
diff --git a/erts/include/internal/ethread.h b/erts/include/internal/ethread.h index 64f1fae6d8..6f9bc184ef 100644 --- a/erts/include/internal/ethread.h +++ b/erts/include/internal/ethread.h @@ -54,13 +54,16 @@ #undef ETHR_INLINE #if defined(__GNUC__) # define ETHR_INLINE __inline__ +# define ETHR_FORCE_INLINE __inline__ __attribute__((__always_inline__)) #elif defined(__WIN32__) # define ETHR_INLINE __forceinline +# define ETHR_FORCE_INLINE __forceinline #endif #if defined(ETHR_DEBUG) || !defined(ETHR_INLINE) || ETHR_XCHK \ || (defined(__GNUC__) && defined(ERTS_MIXED_CYGWIN_VC)) # undef ETHR_INLINE # define ETHR_INLINE +# define ETHR_FORCE_INLINE # undef ETHR_TRY_INLINE_FUNCS #endif diff --git a/erts/include/internal/win/ethr_membar.h b/erts/include/internal/win/ethr_membar.h index 8237660b2c..a17f2459fc 100644 --- a/erts/include/internal/win/ethr_membar.h +++ b/erts/include/internal/win/ethr_membar.h @@ -63,13 +63,13 @@ do { \ #pragma intrinsic(_mm_sfence) #pragma intrinsic(_mm_lfence) -static __forceinline void +static ETHR_FORCE_INLINE void ethr_cfence__(void) { _ReadWriteBarrier(); } -static __forceinline void +static ETHR_FORCE_INLINE void ethr_mfence__(void) { #if ETHR_SIZEOF_PTR == 4 @@ -80,7 +80,7 @@ ethr_mfence__(void) _mm_mfence(); } -static __forceinline void +static ETHR_FORCE_INLINE void ethr_sfence__(void) { #if ETHR_SIZEOF_PTR == 4 @@ -91,7 +91,7 @@ ethr_sfence__(void) _mm_sfence(); } -static __forceinline void +static ETHR_FORCE_INLINE void ethr_lfence__(void) { #if ETHR_SIZEOF_PTR == 4 |