diff --git a/clang/lib/Basic/Targets/Sparc.cpp b/clang/lib/Basic/Targets/Sparc.cpp --- a/clang/lib/Basic/Targets/Sparc.cpp +++ b/clang/lib/Basic/Targets/Sparc.cpp @@ -156,8 +156,6 @@ Builder.defineMacro("__sparcv8__"); break; case CG_V9: - Builder.defineMacro("__sparcv9"); - Builder.defineMacro("__sparcv9__"); Builder.defineMacro("__sparc_v9__"); break; } @@ -239,13 +237,17 @@ void SparcV9TargetInfo::getTargetDefines(const LangOptions &Opts, MacroBuilder &Builder) const { SparcTargetInfo::getTargetDefines(Opts, Builder); - Builder.defineMacro("__sparcv9"); Builder.defineMacro("__arch64__"); - // Solaris doesn't need these variants, but the BSDs do. - if (getTriple().getOS() != llvm::Triple::Solaris) { - Builder.defineMacro("__sparc64__"); + if (getTriple().getOS() == llvm::Triple::Linux) { Builder.defineMacro("__sparc_v9__"); - Builder.defineMacro("__sparcv9__"); + } else { + Builder.defineMacro("__sparcv9"); + // Solaris doesn't need these variants, but the BSDs do. + if (getTriple().getOS() != llvm::Triple::Solaris) { + Builder.defineMacro("__sparc64__"); + Builder.defineMacro("__sparc_v9__"); + Builder.defineMacro("__sparcv9__"); + } } Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1"); diff --git a/clang/test/Preprocessor/predefined-arch-macros.c b/clang/test/Preprocessor/predefined-arch-macros.c --- a/clang/test/Preprocessor/predefined-arch-macros.c +++ b/clang/test/Preprocessor/predefined-arch-macros.c @@ -3457,11 +3457,8 @@ // CHECK_SPARC: #define __BIG_ENDIAN__ 1 // CHECK_SPARC: #define __sparc 1 // CHECK_SPARC: #define __sparc__ 1 -// CHECK_SPARC-NOT: #define __sparcv9 1 -// CHECK_SPARC-NOT: #define __sparcv9__ 1 // CHECK_SPARC: #define __sparcv8 1 -// CHECK_SPARC-NOT: #define __sparcv9 1 -// CHECK_SPARC-NOT: #define __sparcv9__ 1 +// CHECK_SPARC-NOT: #define __sparc_v9__ 1 // RUN: %clang -mcpu=v9 -E -dM %s -o - 2>&1 \ // RUN: -target sparc-unknown-linux \ @@ -3469,8 +3466,6 @@ // CHECK_SPARC-V9-NOT: #define __sparcv8 1 // CHECK_SPARC-V9-NOT: #define __sparcv8__ 1 // CHECK_SPARC-V9: #define __sparc_v9__ 1 -// CHECK_SPARC-V9: #define __sparcv9 1 -// CHECK_SPARC-V9: #define __sparcv9__ 1 // RUN: %clang -E -dM %s -o - 2>&1 \ // RUN: -target sparc-sun-solaris \ @@ -3558,11 +3553,9 @@ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARCV9 // CHECK_SPARCV9: #define __BIG_ENDIAN__ 1 // CHECK_SPARCV9: #define __sparc 1 -// CHECK_SPARCV9: #define __sparc64__ 1 +// CHECK_SPARCV9: #define __arch64__ 1 // CHECK_SPARCV9: #define __sparc__ 1 // CHECK_SPARCV9: #define __sparc_v9__ 1 -// CHECK_SPARCV9: #define __sparcv9 1 -// CHECK_SPARCV9: #define __sparcv9__ 1 // RUN: %clang -E -dM %s -o - 2>&1 \ // RUN: -target sparcv9-unknown-linux \