1# atomic builtins are required for threading support. 2 3INCLUDE(CheckCXXSourceCompiles) 4 5CHECK_CXX_SOURCE_COMPILES(" 6#ifdef _MSC_VER 7#include <windows.h> 8#endif 9int main() { 10#ifdef _MSC_VER 11 volatile LONG val = 1; 12 MemoryBarrier(); 13 InterlockedCompareExchange(&val, 0, 1); 14 InterlockedIncrement(&val); 15 InterlockedDecrement(&val); 16#else 17 volatile unsigned long val = 1; 18 __sync_synchronize(); 19 __sync_val_compare_and_swap(&val, 1, 0); 20 __sync_add_and_fetch(&val, 1); 21 __sync_sub_and_fetch(&val, 1); 22#endif 23 return 0; 24 } 25" LLVM_HAS_ATOMICS) 26 27if( NOT LLVM_HAS_ATOMICS ) 28 message(STATUS "Warning: LLVM will be built thread-unsafe because atomic builtins are missing") 29endif() 30