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 @@ -172,6 +172,10 @@ Builder.defineMacro("__LONG_DOUBLE_IBM128__"); } + if (getTriple().isOSAIX() && LongDoubleWidth == 64) { + Builder.defineMacro("__LONGDOUBLE64"); + } + // Define this for elfv2 (64-bit only) or 64-bit darwin. if (ABI == "elfv2" || (getTriple().getOS() == llvm::Triple::Darwin && PointerWidth == 64)) diff --git a/clang/test/Preprocessor/init-ppc.c b/clang/test/Preprocessor/init-ppc.c --- a/clang/test/Preprocessor/init-ppc.c +++ b/clang/test/Preprocessor/init-ppc.c @@ -512,6 +512,7 @@ // PPC-AIX:#define __LDBL_MIN_10_EXP__ (-307) // PPC-AIX:#define __LDBL_MIN_EXP__ (-1021) // PPC-AIX:#define __LDBL_MIN__ 2.2250738585072014e-308L +// PPC-AIX:#define __LONGDOUBLE64 1 // PPC-AIX:#define __LONG_LONG_MAX__ 9223372036854775807LL // PPC-AIX:#define __LONG_MAX__ 2147483647L // PPC-AIX-NOT:#define __LP64__ 1