Index: llvm-toolchain-snapshot_14~++20220121115143+653b007dc186/clang/lib/Basic/Targets/Sparc.cpp =================================================================== --- llvm-toolchain-snapshot_14~++20220121115143+653b007dc186.orig/clang/lib/Basic/Targets/Sparc.cpp +++ llvm-toolchain-snapshot_14~++20220121115143+653b007dc186/clang/lib/Basic/Targets/Sparc.cpp @@ -156,6 +156,11 @@ void SparcV8TargetInfo::getTargetDefines Builder.defineMacro("__sparcv8__"); break; case CG_V9: + // Linux doesn't need these variants, but the BSDs do. + if (getTriple().getOS() != llvm::Triple::Linux) { + Builder.defineMacro("__sparcv9"); + Builder.defineMacro("__sparcv9__"); + } Builder.defineMacro("__sparc_v9__"); break; } @@ -237,13 +242,17 @@ void SparcV8TargetInfo::getTargetDefines 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");