[PowerPC] Define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_* macros on all PPC cores
We support all __sync_val_compare_and_swap_* builtins (only 64-bit on 64-bit targets) on all cores, and should define the corresponding __GCC_HAVE_SYNC_COMPARE_AND_SWAP_* macros, just as GCC does. As it turns out, this is really important because they're needed to prevent a bad ODR violation with libstdc++'s std::shared_ptr (this is well explained in PR12730). We were doing this only for P8, but this is necessary on all PPC systems. llvm-svn: 249009
This commit is contained in:
parent
0b15e7c618
commit
a57b890a33
|
@ -1220,14 +1220,12 @@ void PPCTargetInfo::getTargetDefines(const LangOptions &Opts,
|
|||
Builder.defineMacro("__CRYPTO__");
|
||||
if (HasHTM)
|
||||
Builder.defineMacro("__HTM__");
|
||||
if (getTriple().getArch() == llvm::Triple::ppc64le ||
|
||||
(defs & ArchDefinePwr8) || (CPU == "pwr8")) {
|
||||
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");
|
||||
}
|
||||
|
||||
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:
|
||||
|
|
|
@ -1675,6 +1675,9 @@
|
|||
//
|
||||
// CHECK_PPC_CRYPTO_M64: #define __CRYPTO__
|
||||
//
|
||||
// RUN: %clang -mcpu=ppc64 -E -dM %s -o - 2>&1 \
|
||||
// RUN: -target powerpc64-unknown-unknown \
|
||||
// RUN: | FileCheck %s -check-prefix=CHECK_PPC_GCC_ATOMICS
|
||||
// RUN: %clang -mcpu=pwr8 -E -dM %s -o - 2>&1 \
|
||||
// RUN: -target powerpc64-unknown-unknown \
|
||||
// RUN: | FileCheck %s -check-prefix=CHECK_PPC_GCC_ATOMICS
|
||||
|
|
Loading…
Reference in New Issue