From 1e6fedbb83585d6ed41c46d84b2727665d85f911 Mon Sep 17 00:00:00 2001 From: Eric Christopher Date: Sat, 25 Mar 2017 19:26:04 +0000 Subject: [PATCH] _CALL_LINUX is only defined on 64-bit ppc linux platforms, not 32-bit. Adjust and add a test for the 32-bit side. llvm-svn: 298778 --- clang/lib/Basic/Targets.cpp | 6 +++--- clang/test/Preprocessor/init.c | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index a43fb91d44594..23ef9f8dd6bdf 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -1238,9 +1238,9 @@ void PPCTargetInfo::getTargetDefines(const LangOptions &Opts, Builder.defineMacro("_CALL_ELF", "2"); // This typically is only for a new enough linker (bfd >= 2.16.2 or gold), but - // our suppport post-dates this and it should work on all linux platforms. It - // is guaranteed to work on all elfv2 platforms. - if (getTriple().getOS() == llvm::Triple::Linux) + // our suppport post-dates this and it should work on all 64-bit ppc linux + // platforms. It is guaranteed to work on all elfv2 platforms. + if (getTriple().getOS() == llvm::Triple::Linux && PointerWidth == 64) Builder.defineMacro("_CALL_LINUX", "1"); // Subtarget options. diff --git a/clang/test/Preprocessor/init.c b/clang/test/Preprocessor/init.c index 2de3230a6b60c..d48d476d70099 100644 --- a/clang/test/Preprocessor/init.c +++ b/clang/test/Preprocessor/init.c @@ -6747,6 +6747,10 @@ // PPC-LINUX:#define __powerpc__ 1 // PPC-LINUX:#define __ppc__ 1 // +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc-unknown-linux-gnu -fno-signed-char < /dev/null | FileCheck -match-full-lines -check-prefix PPC32-LINUX %s +// +// PPC32-LINUX-NOT: _CALL_LINUX +// // RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc-apple-darwin8 < /dev/null | FileCheck -match-full-lines -check-prefix PPC-DARWIN %s // // PPC-DARWIN:#define _ARCH_PPC 1