From: Jonathan Peyton Date: Wed, 23 Mar 2016 16:27:25 +0000 (+0000) Subject: Fix Visual Studio builds X-Git-Tag: llvmorg-3.9.0-rc1~11151 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b7d30cbc7ec8fbaf21d005468ae6d26f41e3a329;p=platform%2Fupstream%2Fllvm.git Fix Visual Studio builds Have Visual Studio use MemoryBarrier() instead of _mm_mfence() and remove __declspec align attribute from function parameters in kmp_atomic.h llvm-svn: 264166 --- diff --git a/openmp/runtime/src/kmp_atomic.h b/openmp/runtime/src/kmp_atomic.h index 33feae2..59b7b00 100644 --- a/openmp/runtime/src/kmp_atomic.h +++ b/openmp/runtime/src/kmp_atomic.h @@ -35,6 +35,13 @@ #if defined( __cplusplus ) && ( KMP_OS_WINDOWS ) // create shortcuts for c99 complex types + // Visual Studio cannot have function parameters that have the + // align __declspec attribute, so we must remove it. (Compiler Error C2719) + #if KMP_COMPILER_MSVC + # undef KMP_DO_ALIGN + # define KMP_DO_ALIGN(alignment) /* Nothing */ + #endif + #if (_MSC_VER < 1600) && defined(_DEBUG) // Workaround for the problem of _DebugHeapTag unresolved external. // This problem prevented to use our static debug library for C tests diff --git a/openmp/runtime/src/kmp_csupport.c b/openmp/runtime/src/kmp_csupport.c index 42d5e41..456cb6b 100644 --- a/openmp/runtime/src/kmp_csupport.c +++ b/openmp/runtime/src/kmp_csupport.c @@ -654,8 +654,10 @@ __kmpc_flush(ident_t *loc) if ( ! __kmp_cpuinfo.sse2 ) { // CPU cannot execute SSE2 instructions. } else { - #if KMP_COMPILER_ICC || KMP_COMPILER_MSVC + #if KMP_COMPILER_ICC _mm_mfence(); + #elif KMP_COMPILER_MSVC + MemoryBarrier(); #else __sync_synchronize(); #endif // KMP_COMPILER_ICC