From 1b52e9bac207cd4bdcd9091178527aa39049c270 Mon Sep 17 00:00:00 2001 From: Jake Egan Date: Thu, 22 Jul 2021 15:44:26 -0400 Subject: [PATCH] [AIX] Define __LONGDOUBLE64 macro This patch defines the macro __LONGDOUBLE64 for AIX when long double is 8 bytes. Reviewed By: cebowleratibm Differential Revision: https://reviews.llvm.org/D105477 --- clang/lib/Basic/Targets/PPC.cpp | 5 +++++ clang/test/Preprocessor/init-ppc.c | 3 +++ 2 files changed, 8 insertions(+) diff --git a/clang/lib/Basic/Targets/PPC.cpp b/clang/lib/Basic/Targets/PPC.cpp index 409504d054f1..59656888e25f 100644 --- a/clang/lib/Basic/Targets/PPC.cpp +++ b/clang/lib/Basic/Targets/PPC.cpp @@ -296,6 +296,11 @@ void PPCTargetInfo::getTargetDefines(const LangOptions &Opts, Builder.defineMacro("__LONG_DOUBLE_IBM128__"); } + if (getTriple().isOSAIX() && Opts.LongDoubleSize == 64) { + assert(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 index 4803a8511c7e..cbcd10fa1ae5 100644 --- a/clang/test/Preprocessor/init-ppc.c +++ b/clang/test/Preprocessor/init-ppc.c @@ -758,6 +758,9 @@ // PPC-AIX-STDC-N-NOT:#define __STDC_NO_ATOMICS__ 1 // PPC-AIX-STDC-N-NOT:#define __STDC_NO_THREADS__ 1 +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc-ibm-aix7.1.0.0 -mlong-double-64 < /dev/null | FileCheck -match-full-lines -check-prefix PPC-AIX-LD64 %s +// PPC-AIX-LD64:#define __LONGDOUBLE64 1 + // RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc-unknown-linux-gnu -fno-signed-char < /dev/null | FileCheck -match-full-lines -check-prefix PPC-LINUX %s // // PPC-LINUX:#define _ARCH_PPC 1 -- 2.34.1