diff options
author | Nemanja Ivanovic <nemanja.i.ibm@gmail.com> | 2015-05-08 13:07:48 +0000 |
---|---|---|
committer | Nemanja Ivanovic <nemanja.i.ibm@gmail.com> | 2015-05-08 13:07:48 +0000 |
commit | 531a656cf01fe9cd4bc78f3a4411f1acff8f2347 (patch) | |
tree | 48898610c4bc821e4e03c0b0b09e445f6b2f8ce3 /clang/lib | |
parent | 3e493037be9c6a0df47c609a924f613726fe4175 (diff) | |
download | bcm5719-llvm-531a656cf01fe9cd4bc78f3a4411f1acff8f2347.tar.gz bcm5719-llvm-531a656cf01fe9cd4bc78f3a4411f1acff8f2347.zip |
Fix for bug 23429.
The macros for gcc atomic compare and swaps are defined for Power8 CPU's since
the functionality is provided in the back end.
llvm-svn: 236848
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Basic/Targets.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 283d1d2ae22..b39cd1eea5b 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -1207,6 +1207,14 @@ void PPCTargetInfo::getTargetDefines(const LangOptions &Opts, Builder.defineMacro("__CRYPTO__"); if (HasHTM) Builder.defineMacro("__HTM__"); + if (getTriple().getArch() == llvm::Triple::ppc64le || + (defs & ArchDefinePwr8)) { + 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"); + if (PointerWidth == 64) + Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8"); + } // FIXME: The following are not yet generated here by Clang, but are // generated by GCC: |