diff --git a/clang/lib/Basic/Targets/OSTargets.h b/clang/lib/Basic/Targets/OSTargets.h --- a/clang/lib/Basic/Targets/OSTargets.h +++ b/clang/lib/Basic/Targets/OSTargets.h @@ -674,8 +674,15 @@ Builder.defineMacro("_IBMR2"); Builder.defineMacro("_POWER"); + Builder.defineMacro("__TOS_AIX__"); Builder.defineMacro("_AIX"); + if (Opts.LangStd == LangStandard::lang_c11 || + Opts.LangStd == LangStandard::lang_gnu11){ + Builder.defineMacro("__STDC_NO_ATOMICS__"); + Builder.defineMacro("__STDC_NO_THREADS__"); + } + if (Opts.EnableAIXExtendedAltivecABI) Builder.defineMacro("__EXTABI__"); diff --git a/clang/lib/Basic/Targets/PPC.cpp b/clang/lib/Basic/Targets/PPC.cpp --- a/clang/lib/Basic/Targets/PPC.cpp +++ b/clang/lib/Basic/Targets/PPC.cpp @@ -92,6 +92,7 @@ Builder.defineMacro("__ppc__"); Builder.defineMacro("__PPC__"); Builder.defineMacro("_ARCH_PPC"); + Builder.defineMacro("__THW_PPC__"); Builder.defineMacro("__powerpc__"); Builder.defineMacro("__POWERPC__"); if (PointerWidth == 64) { diff --git a/clang/test/Preprocessor/init-aix.c b/clang/test/Preprocessor/init-aix.c new file mode 100644 --- /dev/null +++ b/clang/test/Preprocessor/init-aix.c @@ -0,0 +1,12 @@ +// RUN: %clang_cc1 -E -dM < /dev/null | FileCheck -match-full-lines -check-prefix AIX %s +// AIX:#define __THW_PPC__ 1 +// AIX:#define __TOS_AIX__ 1 +// AIX-NOT:#define __STDC_NO_ATOMICS__ 1 +// AIX-NOT:#define __STDC_NO_THREADS__ 1 +// +// RUN: %clang_cc1 -x c -std=c11 -E -dM < /dev/null | FileCheck -match-full-lines -check-prefix AIX-STDC %s +// RUN: %clang_cc1 -x c -std=c1x -E -dM < /dev/null | FileCheck -match-full-lines -check-prefix AIX-STDC %s +// RUN: %clang_cc1 -x c -std=iso9899:2011 -E -dM < /dev/null | FileCheck -match-full-lines -check-prefix AIX-STDC %s +// RUN: %clang_cc1 -x c -std=gnu11 -E -dM < /dev/null | FileCheck -match-full-lines -check-prefix AIX-STDC %s +// AIX-STDC:#define __STDC_NO_ATOMICS__ 1 +// AIX-STDC:#define __STDC_NO_THREADS__ 1