[CMake] Removing duplicates from the list of test suites to generate targets for.
[oota-llvm.git] / cmake / modules / CheckAtomic.cmake
index f40ff4dfbd3123e4ab3fc29de1ddc3595eed1e43..a03788ec9f93bca00893cdb31fc46b232a3334bc 100644 (file)
@@ -2,8 +2,18 @@
 
 INCLUDE(CheckCXXSourceCompiles)
 
+check_function_exists(__atomic_fetch_add_4 HAVE___ATOMIC_FETCH_ADD_4)
+if( NOT HAVE___ATOMIC_FETCH_ADD_4 )
+  check_library_exists(atomic __atomic_fetch_add_4 "" HAVE_LIBATOMIC)
+  set(HAVE_LIBATOMIC False)
+  if( HAVE_LIBATOMIC )
+    list(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
+  endif()
+endif()
+
 CHECK_CXX_SOURCE_COMPILES("
 #ifdef _MSC_VER
+#include <Intrin.h> /* Workaround for PR19898. */
 #include <windows.h>
 #endif
 int main() {
@@ -22,8 +32,8 @@ int main() {
 #endif
         return 0;
       }
-" LLVM_MULTITHREADED)
+" LLVM_HAS_ATOMICS)
 
-if( NOT LLVM_MULTITHREADED )
+if( NOT LLVM_HAS_ATOMICS )
   message(STATUS "Warning: LLVM will be built thread-unsafe because atomic builtins are missing")
 endif()