summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic/Targets.cpp
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2015-05-06 15:31:46 +0000
committerReid Kleckner <reid@kleckner.net>2015-05-06 15:31:46 +0000
commitd167d428883ea2c0bf3134e425536c3049ffb748 (patch)
treef9fecf0347ce0fe8c117a3b936d899d61296f0be /clang/lib/Basic/Targets.cpp
parent1fe0d5ca59ab2e23fc5b9755d83268f649080c61 (diff)
downloadbcm5719-llvm-d167d428883ea2c0bf3134e425536c3049ffb748.tar.gz
bcm5719-llvm-d167d428883ea2c0bf3134e425536c3049ffb748.zip
[AArch64] Advertise that the __sync_*_compare_and_swap_1/2/4/8 builtins work
Fixes PR23428, where std::thread in libstdc++ would go haywire without these defines. llvm-svn: 236605
Diffstat (limited to 'clang/lib/Basic/Targets.cpp')
-rw-r--r--clang/lib/Basic/Targets.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index 91babd3d14e..283d1d2ae22 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -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,
OpenPOWER on IntegriCloud