]> granicus.if.org Git - clang/commitdiff
Fix for bug 23429.
authorNemanja Ivanovic <nemanja.i.ibm@gmail.com>
Fri, 8 May 2015 13:07:48 +0000 (13:07 +0000)
committerNemanja Ivanovic <nemanja.i.ibm@gmail.com>
Fri, 8 May 2015 13:07:48 +0000 (13:07 +0000)
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

lib/Basic/Targets.cpp

index 283d1d2ae22488025fcad8e73d675436237ad688..b39cd1eea5ba138184cd4d045ff26f7312fcc97e 100644 (file)
@@ -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: