From 37f23ea97fdef4484ef33877c6d8464beafd3b0f Mon Sep 17 00:00:00 2001 From: Jake Egan Date: Thu, 2 Sep 2021 13:29:26 -0400 Subject: [PATCH] [AIX][PowerPC] Define __powerpc and __PPC macros %%% This patch defines the macros __powerpc and __PPC on AIX to be consistent with XL for AIX. See: https://www.ibm.com/docs/en/xl-c-and-cpp-aix/13.1.0?topic=macros-related-platform Note: GCC does not currently define __powerpc and __PPC so users should prefer the __powerpc__ and __PPC__ forms. %%% Reviewed By: cebowleratibm Differential Revision: https://reviews.llvm.org/D108917 --- clang/lib/Basic/Targets/PPC.cpp | 3 +++ clang/test/Preprocessor/init-ppc.c | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/clang/lib/Basic/Targets/PPC.cpp b/clang/lib/Basic/Targets/PPC.cpp index c8afb71..8f16f3d 100644 --- a/clang/lib/Basic/Targets/PPC.cpp +++ b/clang/lib/Basic/Targets/PPC.cpp @@ -264,6 +264,9 @@ void PPCTargetInfo::getTargetDefines(const LangOptions &Opts, } if (getTriple().isOSAIX()) { Builder.defineMacro("__THW_PPC__"); + // Define __PPC and __powerpc for AIX XL C/C++ compatibility + Builder.defineMacro("__PPC"); + Builder.defineMacro("__powerpc"); } // Target properties. diff --git a/clang/test/Preprocessor/init-ppc.c b/clang/test/Preprocessor/init-ppc.c index 4f1c33b..611b16d 100644 --- a/clang/test/Preprocessor/init-ppc.c +++ b/clang/test/Preprocessor/init-ppc.c @@ -322,6 +322,7 @@ // PPC:#define __NATURAL_ALIGNMENT__ 1 // PPC:#define __POINTER_WIDTH__ 32 // PPC:#define __POWERPC__ 1 +// PPC-NOT:#define __PPC 1 // PPC:#define __PPC__ 1 // PPC:#define __PTRDIFF_TYPE__ long int // PPC:#define __PTRDIFF_WIDTH__ 32 @@ -386,6 +387,7 @@ // PPC:#define __WCHAR_WIDTH__ 32 // PPC:#define __WINT_TYPE__ int // PPC:#define __WINT_WIDTH__ 32 +// PPC-NOT:#define __powerpc 1 // PPC:#define __ppc__ 1 // RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc-ibm-aix7.1.0.0 -fno-signed-char < /dev/null | FileCheck -match-full-lines -check-prefix PPC-AIX %s @@ -520,6 +522,7 @@ // PPC-AIX-NOT:#define __NATURAL_ALIGNMENT__ 1 // PPC-AIX:#define __POINTER_WIDTH__ 32 // PPC-AIX:#define __POWERPC__ 1 +// PPC-AIX:#define __PPC 1 // PPC-AIX:#define __PPC__ 1 // PPC-AIX:#define __PTRDIFF_TYPE__ long int // PPC-AIX:#define __PTRDIFF_WIDTH__ 32 @@ -587,6 +590,7 @@ // PPC-AIX:#define __WCHAR_WIDTH__ 16 // PPC-AIX:#define __WINT_TYPE__ int // PPC-AIX:#define __WINT_WIDTH__ 32 +// PPC-AIX:#define __powerpc 1 // PPC-AIX:#define __powerpc__ 1 // PPC-AIX:#define __ppc__ 1 -- 2.7.4