From: Nemanja Ivanovic Date: Fri, 8 May 2015 13:07:48 +0000 (+0000) Subject: Fix for bug 23429. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=093c1675175c2c30a73e4779808d7c450d4b0161;p=clang 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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@236848 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp index 283d1d2ae2..b39cd1eea5 100644 --- a/lib/Basic/Targets.cpp +++ b/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: