[AArch64] Advertise that the __sync_*_compare_and_swap_1/2/4/8 builtins work
authorReid Kleckner <reid@kleckner.net>
Wed, 6 May 2015 15:31:46 +0000 (15:31 +0000)
committerReid Kleckner <reid@kleckner.net>
Wed, 6 May 2015 15:31:46 +0000 (15:31 +0000)
Fixes PR23428, where std::thread in libstdc++ would go haywire without
these defines.

llvm-svn: 236605

clang/lib/Basic/Targets.cpp

index 91babd3..283d1d2 100644 (file)
@@ -4926,6 +4926,12 @@ public:
 
     if (Crypto)
       Builder.defineMacro("__ARM_FEATURE_CRYPTO");
+
+    // All of the __sync_(bool|val)_compare_and_swap_(1|2|4|8) builtins work.
+    Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1");
+    Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2");
+    Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4");
+    Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8");
   }
 
   void getTargetBuiltins(const Builtin::Info *&Records,