https://github.com/arsenm created https://github.com/llvm/llvm-project/pull/201869
Avoid littering calls to normalize around by ensuring toolchains always use a normalized triple. The test changes are due to inconsistencies in the behavior of the triple APIs. If the arch name is empty, normalize leaves it unchanged. If the triple is archname--, normalize will expand the empty groups to be unknown. setArchName will introduce the empty groups, which occurs in some of the triple modifying driver path (mostly the handling of the endianness -m flags). Driver is still holding onto a raw, unnormalized string triple but leave that for a later cleanup. Co-authored-by: Claude Sonnet 4 <[email protected]> >From 091152ebc9cda1794308aa182479ad13876f082b Mon Sep 17 00:00:00 2001 From: Matt Arsenault <[email protected]> Date: Fri, 5 Jun 2026 15:33:07 +0200 Subject: [PATCH] clang: Construct toolchains with normalized triples Avoid littering calls to normalize around by ensuring toolchains always use a normalized triple. The test changes are due to inconsistencies in the behavior of the triple APIs. If the arch name is empty, normalize leaves it unchanged. If the triple is archname--, normalize will expand the empty groups to be unknown. setArchName will introduce the empty groups, which occurs in some of the triple modifying driver path (mostly the handling of the endianness -m flags). Driver is still holding onto a raw, unnormalized string triple but leave that for a later cleanup. Co-authored-by: Claude Sonnet 4 <[email protected]> --- clang/lib/Driver/Driver.cpp | 33 +++++++++++-------- clang/lib/Driver/ToolChain.cpp | 1 + clang/lib/Driver/ToolChains/Clang.cpp | 14 ++++---- clang/lib/Driver/ToolChains/HIPUtility.cpp | 8 ++--- clang/lib/Driver/ToolChains/Hexagon.cpp | 6 ++-- clang/test/Driver/aarch64-cortex-a35.c | 4 +-- clang/test/Driver/aarch64-cortex-a53.c | 4 +-- clang/test/Driver/aarch64-cortex-a55.c | 4 +-- clang/test/Driver/aarch64-cortex-a57.c | 4 +-- clang/test/Driver/aarch64-cortex-a72.c | 4 +-- clang/test/Driver/aarch64-cortex-a73.c | 4 +-- clang/test/Driver/aarch64-cortex-a75.c | 4 +-- clang/test/Driver/aarch64-cortex-a76.c | 4 +-- clang/test/Driver/aarch64-fp16.c | 2 +- clang/test/Driver/aarch64-march.c | 4 +-- clang/test/Driver/aarch64-mcpu.c | 2 +- clang/test/Driver/aarch64-oryon-1.c | 4 +-- clang/test/Driver/aarch64-thunderx2t99.c | 4 +-- clang/test/Driver/aarch64-thunderx3t110.c | 4 +-- clang/test/Driver/aarch64-v81a.c | 2 +- clang/test/Driver/aarch64-v83a.c | 2 +- clang/test/Driver/aarch64-v84a.c | 2 +- clang/test/Driver/aarch64-v8a.c | 2 +- .../print-enabled-extensions/aarch64-grace.c | 2 +- 24 files changed, 64 insertions(+), 60 deletions(-) diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index be281f7aeb4a4..e27fab7384ccf 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -640,7 +640,7 @@ static llvm::Triple computeTargetTriple(const Driver &D, if (!DarwinArchName.empty()) { tools::darwin::setTripleTypeForMachOArchName(Target, DarwinArchName, Args); - return Target; + return llvm::Triple(Target.normalize()); } // Handle the Darwin '-arch' flag. @@ -658,7 +658,7 @@ static llvm::Triple computeTargetTriple(const Driver &D, ? Target.getLittleEndianArchVariant() : Target.getBigEndianArchVariant(); if (T.getArch() != llvm::Triple::UnknownArch) { - Target = std::move(T); + Target = llvm::Triple(T.normalize()); Args.claimAllArgs(options::OPT_mlittle_endian, options::OPT_mbig_endian); } } @@ -684,8 +684,10 @@ static llvm::Triple computeTargetTriple(const Driver &D, D.Diag(diag::err_drv_invalid_object_mode) << ObjectMode; } - if (AT != llvm::Triple::UnknownArch && AT != Target.getArch()) + if (AT != llvm::Triple::UnknownArch && AT != Target.getArch()) { Target.setArch(AT); + Target = llvm::Triple(Target.normalize()); + } } } #endif @@ -745,6 +747,8 @@ static llvm::Triple computeTargetTriple(const Driver &D, if (Target.isWindowsGNUEnvironment()) toolchains::MinGW::fixTripleArch(D, Target, Args); } + + Target = llvm::Triple(Target.normalize()); } if (Target.isOSzOS()) { @@ -765,11 +769,9 @@ static llvm::Triple computeTargetTriple(const Driver &D, Target.setArch(llvm::Triple::x86); Target.setArchName("i586"); - Target.setEnvironment(llvm::Triple::UnknownEnvironment); Target.setEnvironmentName(""); Target.setOS(llvm::Triple::ELFIAMCU); - Target.setVendor(llvm::Triple::UnknownVendor); - Target.setVendorName("intel"); + Target.setVendor(llvm::Triple::Intel); } // If target is MIPS adjust the target triple @@ -801,6 +803,8 @@ static llvm::Triple computeTargetTriple(const Driver &D, Target.getEnvironment() == llvm::Triple::MuslABIN32) Target.setEnvironment(llvm::Triple::MuslABI64); } + + Target = llvm::Triple(Target.normalize()); } } @@ -819,11 +823,13 @@ static llvm::Triple computeTargetTriple(const Driver &D, Target.setArch(llvm::Triple::riscv32); else Target.setArch(llvm::Triple::riscv32be); + Target = llvm::Triple(Target.normalize()); } else if (XLen == 64) { if (Target.isLittleEndian()) Target.setArch(llvm::Triple::riscv64); else Target.setArch(llvm::Triple::riscv64be); + Target = llvm::Triple(Target.normalize()); } } } @@ -1734,7 +1740,7 @@ Compilation *Driver::BuildCompilation(ArrayRef<const char *> ArgList) { TC.getTriple().getSubArch() != llvm::Triple::AArch64SubArch_arm64ec) && UArgs->hasArg(options::OPT__SLASH_arm64EC)) { getDiags().Report(clang::diag::warn_target_override_arm64ec) - << TC.getTriple().str(); + << TC.getTripleString(); } // A common user mistake is specifying a target of aarch64-none-eabi or @@ -2835,7 +2841,7 @@ static unsigned PrintActions1(const Compilation &C, Action *A, os << '"'; os << A->getOffloadingKindPrefix(); os << " ("; - os << TC->getTriple().normalize(); + os << TC->getTripleString(); if (BoundArch) os << ":" << BoundArch; os << ")"; @@ -6015,7 +6021,7 @@ class ToolSelector final { static std::string GetTriplePlusArchString(const ToolChain *TC, StringRef BoundArch, Action::OffloadKind OffloadKind) { - std::string TriplePlusArch = TC->getTriple().normalize(); + std::string TriplePlusArch = TC->getTriple().str(); if (!BoundArch.empty()) { TriplePlusArch += "-"; TriplePlusArch += BoundArch; @@ -6056,7 +6062,7 @@ static void handleTimeTrace(Compilation &C, const ArgList &Args, if (JA->getOffloadingDeviceKind() != Action::OFK_None) { const ToolChain *TC = JA->getOffloadingToolChain(); OffloadingPrefix = Action::GetOffloadingFileNamePrefix( - JA->getOffloadingDeviceKind(), TC ? TC->getTriple().normalize() : "", + JA->getOffloadingDeviceKind(), TC ? TC->getTripleString() : "", /*CreatePrefixForHost=*/false); if (const char *Arch = JA->getOffloadingArch()) { OffloadingPrefix += "-"; @@ -6065,7 +6071,7 @@ static void handleTimeTrace(Compilation &C, const ArgList &Args, } else if (JA->getOffloadingHostActiveKinds() != Action::OFK_None && C.getDriver().isSaveTempsEnabled()) { OffloadingPrefix = Action::GetOffloadingFileNamePrefix( - Action::OFK_None, C.getDefaultToolChain().getTriple().normalize(), + Action::OFK_None, C.getDefaultToolChain().getTripleString(), /*CreatePrefixForHost=*/true); } @@ -6314,8 +6320,7 @@ InputInfoList Driver::BuildJobsForActionNoCache( // unbundling action does not change the type of the output which can // cause a overwrite. std::string OffloadingPrefix = Action::GetOffloadingFileNamePrefix( - UI.DependentOffloadKind, - UI.DependentToolChain->getTriple().normalize(), + UI.DependentOffloadKind, UI.DependentToolChain->getTripleString(), /*CreatePrefixForHost=*/true); auto CurI = InputInfo( UA, @@ -6357,7 +6362,7 @@ InputInfoList Driver::BuildJobsForActionNoCache( // We only have to generate a prefix for the host if this is not a top-level // action. std::string OffloadingPrefix = Action::GetOffloadingFileNamePrefix( - A->getOffloadingDeviceKind(), EffectiveTriple.normalize(), + A->getOffloadingDeviceKind(), EffectiveTriple.str(), /*CreatePrefixForHost=*/isa<OffloadPackagerJobAction>(A) || !(A->getOffloadingHostActiveKinds() == Action::OFK_None || AtTopLevel)); diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp index ccfc022f79427..d8810e3612ab4 100644 --- a/clang/lib/Driver/ToolChain.cpp +++ b/clang/lib/Driver/ToolChain.cpp @@ -93,6 +93,7 @@ ToolChain::ToolChain(const Driver &D, const llvm::Triple &T, : D(D), Triple(T), Args(Args), CachedRTTIArg(GetRTTIArgument(Args)), CachedRTTIMode(CalculateRTTIMode(Args, Triple, CachedRTTIArg)), CachedExceptionsMode(CalculateExceptionsMode(Args)) { + assert(T.str() == T.normalize() && "triple should be normalized"); auto addIfExists = [this](path_list &List, const std::string &Path) { if (getVFS().exists(Path)) List.push_back(Path); diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 8a0efd70e6c0d..d5d218d261b4b 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -410,7 +410,7 @@ static void addPGOAndCoverageFlags(const ToolChain &TC, Compilation &C, if (TC.getTriple().isOSAIX()) { if (Arg *ProfileSampleUseArg = getLastProfileSampleUseArg(Args)) D.Diag(diag::err_drv_unsupported_opt_for_target) - << ProfileSampleUseArg->getSpelling() << TC.getTriple().str(); + << ProfileSampleUseArg->getSpelling() << TC.getTripleString(); } if (ProfileGenerateArg) { @@ -1312,7 +1312,7 @@ static void renderRemarksOptions(const ArgList &Args, ArgStringList &CmdArgs, !JA.isDeviceOffloading(Action::OFK_Host)) { llvm::sys::path::replace_extension(F, ""); F += Action::GetOffloadingFileNamePrefix(JA.getOffloadingDeviceKind(), - Triple.normalize()); + Triple.str()); F += "-"; F += JA.getOffloadingArch(); } @@ -4522,7 +4522,7 @@ renderDebugOptions(const ToolChain &TC, const Driver &D, const llvm::Triple &T, if (TC.getTriple().isOSAIX() && Args.hasArg(options::OPT_gsplit_dwarf)) { D.Diag(diag::err_drv_unsupported_opt_for_target) << Args.getLastArg(options::OPT_gsplit_dwarf)->getSpelling() - << TC.getTriple().str(); + << TC.getTripleString(); return; } Arg *SplitDWARFArg; @@ -5191,12 +5191,10 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, if (IsOpenMPDevice) { // We have to pass the triple of the host if compiling for an OpenMP device. - std::string NormalizedTriple = - C.getSingleOffloadToolChain<Action::OFK_Host>() - ->getTriple() - .normalize(); + const llvm::Triple &HostTriple = + C.getSingleOffloadToolChain<Action::OFK_Host>()->getTriple(); CmdArgs.push_back("-aux-triple"); - CmdArgs.push_back(Args.MakeArgString(NormalizedTriple)); + CmdArgs.push_back(HostTriple.str().c_str()); } if (Triple.isOSWindows() && (Triple.getArch() == llvm::Triple::arm || diff --git a/clang/lib/Driver/ToolChains/HIPUtility.cpp b/clang/lib/Driver/ToolChains/HIPUtility.cpp index e7fc61114a72a..e174132cf0f3f 100644 --- a/clang/lib/Driver/ToolChains/HIPUtility.cpp +++ b/clang/lib/Driver/ToolChains/HIPUtility.cpp @@ -477,10 +477,10 @@ void HIP::constructGenerateObjFileFromHIPFatBinary( Objf << ObjBuffer; - ArgStringList ClangArgs{"-target", Args.MakeArgString(HostTriple.normalize()), - "-o", Output.getFilename(), - "-x", "assembler", - ObjinFile, "-c"}; + ArgStringList ClangArgs{"-target", Args.MakeArgStringRef(HostTriple.str()), + "-o", Output.getFilename(), + "-x", "assembler", + ObjinFile, "-c"}; C.addCommand(std::make_unique<Command>(JA, T, ResponseFileSupport::None(), D.getDriverProgramPath(), ClangArgs, Inputs, Output, D.getPrependArg())); diff --git a/clang/lib/Driver/ToolChains/Hexagon.cpp b/clang/lib/Driver/ToolChains/Hexagon.cpp index 0e7055797a1f0..28310f23232a1 100644 --- a/clang/lib/Driver/ToolChains/Hexagon.cpp +++ b/clang/lib/Driver/ToolChains/Hexagon.cpp @@ -555,11 +555,11 @@ HexagonToolChain::getEffectiveSysRoot(const ArgList &Args) const { SmallString<128> Dir(getHexagonTargetDir(D.Dir, D.PrefixDirs)); // For Picolibc, use picolibc/<triple> with no fallback. if (GetCStdlibType(Args) == ToolChain::CST_Picolibc) { - llvm::sys::path::append(Dir, "picolibc", getTriple().normalize()); + llvm::sys::path::append(Dir, "picolibc", getTripleString()); return Dir; } // Otherwise, try a triple subdirectory first, then fall back to "hexagon". - llvm::sys::path::append(Dir, getTriple().normalize()); + llvm::sys::path::append(Dir, getTripleString()); if (getVFS().exists(Dir)) return Dir; Dir = getHexagonTargetDir(D.Dir, D.PrefixDirs); @@ -723,7 +723,7 @@ void HexagonToolChain::AddCXXStdlibLibArgs(const ArgList &Args, const Arg *A = Args.getLastArg(options::OPT_unwindlib_EQ); if (A) { getDriver().Diag(diag::err_drv_unsupported_unwind_for_platform) - << A->getValue() << getTriple().normalize(); + << A->getValue() << getTripleString(); return; } } diff --git a/clang/test/Driver/aarch64-cortex-a35.c b/clang/test/Driver/aarch64-cortex-a35.c index 764b5c10f2719..2cf373702823c 100644 --- a/clang/test/Driver/aarch64-cortex-a35.c +++ b/clang/test/Driver/aarch64-cortex-a35.c @@ -4,8 +4,8 @@ // RUN: %clang --target=aarch64 -mtune=cortex-a35 -### -c %s 2>&1 | FileCheck -check-prefix=CA35-TUNE %s // RUN: %clang --target=aarch64 -mlittle-endian -mtune=cortex-a35 -### -c %s 2>&1 | FileCheck -check-prefix=CA35-TUNE %s // RUN: %clang --target=aarch64_be -mlittle-endian -mtune=cortex-a35 -### -c %s 2>&1 | FileCheck -check-prefix=CA35-TUNE %s -// CA35: "-cc1"{{.*}} "-triple" "aarch64{{(--)?}}"{{.*}} "-target-cpu" "cortex-a35" -// CA35-TUNE: "-cc1"{{.*}} "-triple" "aarch64{{(--)?}}"{{.*}} "-target-cpu" "generic" +// CA35: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}"{{.*}} "-target-cpu" "cortex-a35" +// CA35-TUNE: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}"{{.*}} "-target-cpu" "generic" // RUN: %clang --target=arm64 -mcpu=cortex-a35 -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-CA35 %s // RUN: %clang --target=arm64 -mlittle-endian -mcpu=cortex-a35 -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-CA35 %s diff --git a/clang/test/Driver/aarch64-cortex-a53.c b/clang/test/Driver/aarch64-cortex-a53.c index 0f0239808c3c2..ba1a265183074 100644 --- a/clang/test/Driver/aarch64-cortex-a53.c +++ b/clang/test/Driver/aarch64-cortex-a53.c @@ -3,8 +3,8 @@ // RUN: %clang --target=aarch64_be -mlittle-endian -mcpu=cortex-a53 -### -c %s 2>&1 | FileCheck -check-prefix=CA53 %s // RUN: %clang --target=aarch64 -mtune=cortex-a53 -### -c %s 2>&1 | FileCheck -check-prefix=CA53-TUNE %s // RUN: %clang --target=aarch64_be -mlittle-endian -mtune=cortex-a53 -### -c %s 2>&1 | FileCheck -check-prefix=CA53-TUNE %s -// CA53: "-cc1"{{.*}} "-triple" "aarch64{{(--)?}}"{{.*}} "-target-cpu" "cortex-a53" -// CA53-TUNE: "-cc1"{{.*}} "-triple" "aarch64{{(--)?}}"{{.*}} "-target-cpu" "generic" +// CA53: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}"{{.*}} "-target-cpu" "cortex-a53" +// CA53-TUNE: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}"{{.*}} "-target-cpu" "generic" // RUN: %clang --target=arm64 -mcpu=cortex-a53 -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-CA53 %s // RUN: %clang --target=arm64 -mlittle-endian -mcpu=cortex-a53 -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-CA53 %s diff --git a/clang/test/Driver/aarch64-cortex-a55.c b/clang/test/Driver/aarch64-cortex-a55.c index 519065d9ea032..edc41d415a2fd 100644 --- a/clang/test/Driver/aarch64-cortex-a55.c +++ b/clang/test/Driver/aarch64-cortex-a55.c @@ -3,8 +3,8 @@ // RUN: %clang --target=aarch64_be -mlittle-endian -mcpu=cortex-a55 -### -c %s 2>&1 | FileCheck -check-prefix=CA55 %s // RUN: %clang --target=aarch64 -mtune=cortex-a55 -### -c %s 2>&1 | FileCheck -check-prefix=CA55-TUNE %s // RUN: %clang --target=aarch64_be -mlittle-endian -mtune=cortex-a55 -### -c %s 2>&1 | FileCheck -check-prefix=CA55-TUNE %s -// CA55: "-cc1"{{.*}} "-triple" "aarch64{{(--)?}}"{{.*}} "-target-cpu" "cortex-a55" -// CA55-TUNE: "-cc1"{{.*}} "-triple" "aarch64{{(--)?}}"{{.*}} "-target-cpu" "generic" +// CA55: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}"{{.*}} "-target-cpu" "cortex-a55" +// CA55-TUNE: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}"{{.*}} "-target-cpu" "generic" // RUN: %clang --target=arm64 -mcpu=cortex-a55 -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-CA55 %s // RUN: %clang --target=arm64 -mlittle-endian -mcpu=cortex-a55 -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-CA55 %s diff --git a/clang/test/Driver/aarch64-cortex-a57.c b/clang/test/Driver/aarch64-cortex-a57.c index f26030cead395..30dccf5b4a094 100644 --- a/clang/test/Driver/aarch64-cortex-a57.c +++ b/clang/test/Driver/aarch64-cortex-a57.c @@ -4,8 +4,8 @@ // RUN: %clang --target=aarch64 -mtune=cortex-a57 -### -c %s 2>&1 | FileCheck -check-prefix=CA57-TUNE %s // RUN: %clang --target=aarch64 -mlittle-endian -mtune=cortex-a57 -### -c %s 2>&1 | FileCheck -check-prefix=CA57-TUNE %s // RUN: %clang --target=aarch64_be -mlittle-endian -mtune=cortex-a57 -### -c %s 2>&1 | FileCheck -check-prefix=CA57-TUNE %s -// CA57: "-cc1"{{.*}} "-triple" "aarch64{{(--)?}}"{{.*}} "-target-cpu" "cortex-a57" -// CA57-TUNE: "-cc1"{{.*}} "-triple" "aarch64{{(--)?}}"{{.*}} "-target-cpu" "generic" +// CA57: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}"{{.*}} "-target-cpu" "cortex-a57" +// CA57-TUNE: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}"{{.*}} "-target-cpu" "generic" // RUN: %clang --target=arm64 -mcpu=cortex-a57 -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-CA57 %s // RUN: %clang --target=arm64 -mlittle-endian -mcpu=cortex-a57 -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-CA57 %s diff --git a/clang/test/Driver/aarch64-cortex-a72.c b/clang/test/Driver/aarch64-cortex-a72.c index 75aa1e062fa72..b4b5b2c9678ca 100644 --- a/clang/test/Driver/aarch64-cortex-a72.c +++ b/clang/test/Driver/aarch64-cortex-a72.c @@ -4,8 +4,8 @@ // RUN: %clang --target=aarch64 -mtune=cortex-a72 -### -c %s 2>&1 | FileCheck -check-prefix=CA72-TUNE %s // RUN: %clang --target=aarch64 -mlittle-endian -mtune=cortex-a72 -### -c %s 2>&1 | FileCheck -check-prefix=CA72-TUNE %s // RUN: %clang --target=aarch64_be -mlittle-endian -mtune=cortex-a72 -### -c %s 2>&1 | FileCheck -check-prefix=CA72-TUNE %s -// CA72: "-cc1"{{.*}} "-triple" "aarch64{{(--)?}}"{{.*}} "-target-cpu" "cortex-a72" -// CA72-TUNE: "-cc1"{{.*}} "-triple" "aarch64{{(--)?}}"{{.*}} "-target-cpu" "generic" +// CA72: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}"{{.*}} "-target-cpu" "cortex-a72" +// CA72-TUNE: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}"{{.*}} "-target-cpu" "generic" // RUN: %clang --target=arm64 -mcpu=cortex-a72 -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-CA72 %s // RUN: %clang --target=arm64 -mlittle-endian -mcpu=cortex-a72 -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-CA72 %s diff --git a/clang/test/Driver/aarch64-cortex-a73.c b/clang/test/Driver/aarch64-cortex-a73.c index 7ec369ffbb3c2..3e9490cf16f36 100644 --- a/clang/test/Driver/aarch64-cortex-a73.c +++ b/clang/test/Driver/aarch64-cortex-a73.c @@ -4,8 +4,8 @@ // RUN: %clang --target=aarch64 -mtune=cortex-a73 -### -c %s 2>&1 | FileCheck -check-prefix=CORTEX-A73-TUNE %s // RUN: %clang --target=aarch64 -mlittle-endian -mtune=cortex-a73 -### -c %s 2>&1 | FileCheck -check-prefix=CORTEX-A73-TUNE %s // RUN: %clang --target=aarch64_be -mlittle-endian -mtune=cortex-a73 -### -c %s 2>&1 | FileCheck -check-prefix=CORTEX-A73-TUNE %s -// CORTEX-A73: "-cc1"{{.*}} "-triple" "aarch64{{(--)?}}"{{.*}} "-target-cpu" "cortex-a73" -// CORTEX-A73-TUNE: "-cc1"{{.*}} "-triple" "aarch64{{(--)?}}"{{.*}} "-target-cpu" "generic" +// CORTEX-A73: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}"{{.*}} "-target-cpu" "cortex-a73" +// CORTEX-A73-TUNE: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}"{{.*}} "-target-cpu" "generic" // RUN: %clang --target=arm64 -mcpu=cortex-a73 -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-CORTEX-A73 %s // RUN: %clang --target=arm64 -mlittle-endian -mcpu=cortex-a73 -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-CORTEX-A73 %s diff --git a/clang/test/Driver/aarch64-cortex-a75.c b/clang/test/Driver/aarch64-cortex-a75.c index 77584977ce693..a74022d6eead9 100644 --- a/clang/test/Driver/aarch64-cortex-a75.c +++ b/clang/test/Driver/aarch64-cortex-a75.c @@ -4,8 +4,8 @@ // RUN: %clang --target=aarch64 -mtune=cortex-a75 -### -c %s 2>&1 | FileCheck -check-prefix=CORTEX-A75-TUNE %s // RUN: %clang --target=aarch64 -mlittle-endian -mtune=cortex-a75 -### -c %s 2>&1 | FileCheck -check-prefix=CORTEX-A75-TUNE %s // RUN: %clang --target=aarch64_be -mlittle-endian -mtune=cortex-a75 -### -c %s 2>&1 | FileCheck -check-prefix=CORTEX-A75-TUNE %s -// CORTEX-A75: "-cc1"{{.*}} "-triple" "aarch64{{(--)?}}"{{.*}} "-target-cpu" "cortex-a75" -// CORTEX-A75-TUNE: "-cc1"{{.*}} "-triple" "aarch64{{(--)?}}"{{.*}} "-target-cpu" "generic" +// CORTEX-A75: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}"{{.*}} "-target-cpu" "cortex-a75" +// CORTEX-A75-TUNE: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}"{{.*}} "-target-cpu" "generic" // RUN: %clang --target=arm64 -mcpu=cortex-a75 -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-CORTEX-A75 %s // RUN: %clang --target=arm64 -mlittle-endian -mcpu=cortex-a75 -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-CORTEX-A75 %s diff --git a/clang/test/Driver/aarch64-cortex-a76.c b/clang/test/Driver/aarch64-cortex-a76.c index 6a4575e01a267..ced92cdf6f82d 100644 --- a/clang/test/Driver/aarch64-cortex-a76.c +++ b/clang/test/Driver/aarch64-cortex-a76.c @@ -4,8 +4,8 @@ // RUN: %clang --target=aarch64 -mtune=cortex-a76 -### -c %s 2>&1 | FileCheck -check-prefix=CORTEX-A76-TUNE %s // RUN: %clang --target=aarch64 -mlittle-endian -mtune=cortex-a76 -### -c %s 2>&1 | FileCheck -check-prefix=CORTEX-A76-TUNE %s // RUN: %clang --target=aarch64_be -mlittle-endian -mtune=cortex-a76 -### -c %s 2>&1 | FileCheck -check-prefix=CORTEX-A76-TUNE %s -// CORTEX-A76: "-cc1"{{.*}} "-triple" "aarch64{{(--)?}}"{{.*}} "-target-cpu" "cortex-a76" -// CORTEX-A76-TUNE: "-cc1"{{.*}} "-triple" "aarch64{{(--)?}}"{{.*}} "-target-cpu" "generic" +// CORTEX-A76: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}"{{.*}} "-target-cpu" "cortex-a76" +// CORTEX-A76-TUNE: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}"{{.*}} "-target-cpu" "generic" // RUN: %clang --target=arm64 -mcpu=cortex-a76 -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-CORTEX-A76 %s // RUN: %clang --target=arm64 -mlittle-endian -mcpu=cortex-a76 -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-CORTEX-A76 %s diff --git a/clang/test/Driver/aarch64-fp16.c b/clang/test/Driver/aarch64-fp16.c index 72ccd79850148..7c7d7217130e9 100644 --- a/clang/test/Driver/aarch64-fp16.c +++ b/clang/test/Driver/aarch64-fp16.c @@ -5,7 +5,7 @@ // RUN: %clang --target=aarch64 -march=armv8-a -### -c %s 2>&1 | FileCheck -check-prefix=V82ANOFP16 -check-prefix=GENERIC %s // V82ANOFP16-NOT: "-target-feature" "{{[+-]}}fp16fml" // V82ANOFP16-NOT: "-target-feature" "{{[+-]}}fullfp16" -// GENERIC: "-cc1"{{.*}} "-triple" "aarch64{{(--)?}}"{{.*}} "-target-cpu" "generic" +// GENERIC: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}"{{.*}} "-target-cpu" "generic" // RUN: %clang --target=aarch64 -march=armv8a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV8A-NO-FP16FML %s // RUN: %clang --target=aarch64 -march=armv8-a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV8A-NO-FP16FML %s diff --git a/clang/test/Driver/aarch64-march.c b/clang/test/Driver/aarch64-march.c index 5a0dba3a7e7b7..449592ee102fb 100644 --- a/clang/test/Driver/aarch64-march.c +++ b/clang/test/Driver/aarch64-march.c @@ -1,9 +1,9 @@ // RUN: %clang --target=aarch64 -### -c %s 2>&1 | FileCheck -check-prefix=GENERIC-V8A %s // RUN: %clang --target=aarch64 -march=armv8-a -### -c %s 2>&1 | FileCheck -check-prefix=GENERIC-V8A %s -// GENERIC-V8A: "-cc1"{{.*}} "-triple" "aarch64{{(--)?}}"{{.*}} "-target-cpu" "generic" "-target-feature" "+v8a" +// GENERIC-V8A: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}"{{.*}} "-target-cpu" "generic" "-target-feature" "+v8a" // RUN: %clang --target=aarch64 -march=armv8-r -### -c %s 2>&1 | FileCheck -check-prefix=GENERIC-V8R %s -// GENERIC-V8R: "-cc1"{{.*}} "-triple" "aarch64{{(--)?}}"{{.*}} "-target-cpu" "generic" "-target-feature" "+v8r" +// GENERIC-V8R: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}"{{.*}} "-target-cpu" "generic" "-target-feature" "+v8r" // RUN: %clang --target=aarch64 -march=armv9a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV9A %s // RUN: %clang --target=aarch64 -march=armv9-a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV9A %s diff --git a/clang/test/Driver/aarch64-mcpu.c b/clang/test/Driver/aarch64-mcpu.c index be5415b735d12..6bea0b0dfe94a 100644 --- a/clang/test/Driver/aarch64-mcpu.c +++ b/clang/test/Driver/aarch64-mcpu.c @@ -4,7 +4,7 @@ // RUN: %clang --target=aarch64 -mlittle-endian -mcpu=generic -### -c %s 2>&1 | FileCheck -check-prefix=GENERIC %s // RUN: %clang --target=aarch64_be -mlittle-endian -### -c %s 2>&1 | FileCheck -check-prefix=GENERIC %s // RUN: %clang --target=aarch64_be -mlittle-endian -mcpu=generic -### -c %s 2>&1 | FileCheck -check-prefix=GENERIC %s -// GENERIC: "-cc1"{{.*}} "-triple" "aarch64{{(--)?}}"{{.*}} "-target-cpu" "generic" +// GENERIC: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}"{{.*}} "-target-cpu" "generic" // RUN: %clang --target=arm64 -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-GENERIC %s // RUN: %clang --target=arm64 -mcpu=generic -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-GENERIC %s diff --git a/clang/test/Driver/aarch64-oryon-1.c b/clang/test/Driver/aarch64-oryon-1.c index 952ba5df74baf..0e9f9d12e5ff0 100644 --- a/clang/test/Driver/aarch64-oryon-1.c +++ b/clang/test/Driver/aarch64-oryon-1.c @@ -4,8 +4,8 @@ // RUN: %clang -target aarch64 -mtune=oryon-1 -### -c %s 2>&1 | FileCheck -check-prefix=Phoenix-TUNE %s // RUN: %clang -target aarch64 -mlittle-endian -mtune=oryon-1 -### -c %s 2>&1 | FileCheck -check-prefix=Phoenix-TUNE %s // RUN: %clang -target aarch64_be -mlittle-endian -mtune=oryon-1 -### -c %s 2>&1 | FileCheck -check-prefix=Phoenix-TUNE %s -// Phoenix: "-cc1"{{.*}} "-triple" "aarch64{{(--)?}}"{{.*}} "-target-cpu" "oryon-1" "-target-feature" "+v8.6a" -// Phoenix-TUNE: "-cc1"{{.*}} "-triple" "aarch64{{(--)?}}"{{.*}} "-target-cpu" "generic" +// Phoenix: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}"{{.*}} "-target-cpu" "oryon-1" "-target-feature" "+v8.6a" +// Phoenix-TUNE: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}"{{.*}} "-target-cpu" "generic" // RUN: %clang -target arm64 -mcpu=oryon-1 -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-Phoenix %s // RUN: %clang -target arm64 -mlittle-endian -mcpu=oryon-1 -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-Phoenix %s diff --git a/clang/test/Driver/aarch64-thunderx2t99.c b/clang/test/Driver/aarch64-thunderx2t99.c index bd94bfb28ec2f..6e35728a90284 100644 --- a/clang/test/Driver/aarch64-thunderx2t99.c +++ b/clang/test/Driver/aarch64-thunderx2t99.c @@ -4,8 +4,8 @@ // RUN: %clang --target=aarch64 -mtune=thunderx2t99 -### -c %s 2>&1 | FileCheck -check-prefix=THUNDERX2T99-TUNE %s // RUN: %clang --target=aarch64 -mlittle-endian -mtune=thunderx2t99 -### -c %s 2>&1 | FileCheck -check-prefix=THUNDERX2T99-TUNE %s // RUN: %clang --target=aarch64_be -mlittle-endian -mtune=thunderx2t99 -### -c %s 2>&1 | FileCheck -check-prefix=THUNDERX2T99-TUNE %s -// THUNDERX2T99: "-cc1"{{.*}} "-triple" "aarch64{{(--)?}}"{{.*}} "-target-cpu" "thunderx2t99" "-target-feature" "+v8.1a" -// THUNDERX2T99-TUNE: "-cc1"{{.*}} "-triple" "aarch64{{(--)?}}"{{.*}} "-target-cpu" "generic" +// THUNDERX2T99: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}"{{.*}} "-target-cpu" "thunderx2t99" "-target-feature" "+v8.1a" +// THUNDERX2T99-TUNE: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}"{{.*}} "-target-cpu" "generic" // THUNDERX2T99-TUNE-NOT: +v8.1a // RUN: %clang --target=arm64 -mcpu=thunderx2t99 -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-THUNDERX2T99 %s diff --git a/clang/test/Driver/aarch64-thunderx3t110.c b/clang/test/Driver/aarch64-thunderx3t110.c index 75caba9718c73..0364f6c374681 100644 --- a/clang/test/Driver/aarch64-thunderx3t110.c +++ b/clang/test/Driver/aarch64-thunderx3t110.c @@ -4,8 +4,8 @@ // RUN: %clang --target=aarch64 -mtune=thunderx3t110 -### -c %s 2>&1 | FileCheck -check-prefix=THUNDERX3T110-TUNE %s // RUN: %clang --target=aarch64 -mlittle-endian -mtune=thunderx3t110 -### -c %s 2>&1 | FileCheck -check-prefix=THUNDERX3T110-TUNE %s // RUN: %clang --target=aarch64_be -mlittle-endian -mtune=thunderx3t110 -### -c %s 2>&1 | FileCheck -check-prefix=THUNDERX3T110-TUNE %s -// THUNDERX3T110: "-cc1"{{.*}} "-triple" "aarch64{{(--)?}}"{{.*}} "-target-cpu" "thunderx3t110" "-target-feature" "+v8.3a" -// THUNDERX3T110-TUNE: "-cc1"{{.*}} "-triple" "aarch64{{(--)?}}"{{.*}} "-target-cpu" "generic" +// THUNDERX3T110: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}"{{.*}} "-target-cpu" "thunderx3t110" "-target-feature" "+v8.3a" +// THUNDERX3T110-TUNE: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}"{{.*}} "-target-cpu" "generic" // RUN: %clang --target=arm64 -mcpu=thunderx3t110 -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-THUNDERX3T110 %s // RUN: %clang --target=arm64 -mlittle-endian -mcpu=thunderx3t110 -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-THUNDERX3T110 %s diff --git a/clang/test/Driver/aarch64-v81a.c b/clang/test/Driver/aarch64-v81a.c index e84652ec7f11e..a89fff2aaab0a 100644 --- a/clang/test/Driver/aarch64-v81a.c +++ b/clang/test/Driver/aarch64-v81a.c @@ -12,7 +12,7 @@ // RUN: %clang --target=aarch64 -mlittle-endian -march=armv8.1-a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV81A %s // RUN: %clang --target=aarch64_be -mlittle-endian -march=armv8.1a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV81A %s // RUN: %clang --target=aarch64_be -mlittle-endian -march=armv8.1-a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV81A %s -// GENERICV81A: "-cc1"{{.*}} "-triple" "aarch64{{(--)?}}"{{.*}} "-target-cpu" "generic"{{.*}} "-target-feature" "+v8.1a"{{.*}} "-target-feature" "+neon"{{.*}} +// GENERICV81A: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}"{{.*}} "-target-cpu" "generic"{{.*}} "-target-feature" "+v8.1a"{{.*}} "-target-feature" "+neon"{{.*}} // RUN: %clang --target=arm64 -march=armv8.1a -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-GENERICV81A %s // RUN: %clang --target=arm64 -march=armv8.1-a -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-GENERICV81A %s diff --git a/clang/test/Driver/aarch64-v83a.c b/clang/test/Driver/aarch64-v83a.c index b0ff9fb3abc24..27fa64c782e68 100644 --- a/clang/test/Driver/aarch64-v83a.c +++ b/clang/test/Driver/aarch64-v83a.c @@ -4,7 +4,7 @@ // RUN: %clang --target=aarch64 -mlittle-endian -march=armv8.3-a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV83A %s // RUN: %clang --target=aarch64_be -mlittle-endian -march=armv8.3a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV83A %s // RUN: %clang --target=aarch64_be -mlittle-endian -march=armv8.3-a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV83A %s -// GENERICV83A: "-cc1"{{.*}} "-triple" "aarch64{{(--)?}}"{{.*}} "-target-cpu" "generic" "-target-feature" "+v8.3a"{{.*}} "-target-feature" "+neon" +// GENERICV83A: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}"{{.*}} "-target-cpu" "generic" "-target-feature" "+v8.3a"{{.*}} "-target-feature" "+neon" // RUN: %clang --target=aarch64_be -march=armv8.3a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV83A-BE %s // RUN: %clang --target=aarch64_be -march=armv8.3-a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV83A-BE %s diff --git a/clang/test/Driver/aarch64-v84a.c b/clang/test/Driver/aarch64-v84a.c index 030990bfe5131..ddc29156d17c3 100644 --- a/clang/test/Driver/aarch64-v84a.c +++ b/clang/test/Driver/aarch64-v84a.c @@ -4,7 +4,7 @@ // RUN: %clang --target=aarch64 -mlittle-endian -march=armv8.4-a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV84A %s // RUN: %clang --target=aarch64_be -mlittle-endian -march=armv8.4a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV84A %s // RUN: %clang --target=aarch64_be -mlittle-endian -march=armv8.4-a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV84A %s -// GENERICV84A: "-cc1"{{.*}} "-triple" "aarch64{{(--)?}}"{{.*}} "-target-cpu" "generic" "-target-feature" "+v8.4a"{{.*}} "-target-feature" "+neon" +// GENERICV84A: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}"{{.*}} "-target-cpu" "generic" "-target-feature" "+v8.4a"{{.*}} "-target-feature" "+neon" // RUN: %clang --target=aarch64_be -march=armv8.4a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV84A-BE %s // RUN: %clang --target=aarch64_be -march=armv8.4-a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV84A-BE %s diff --git a/clang/test/Driver/aarch64-v8a.c b/clang/test/Driver/aarch64-v8a.c index d58e1c29cf2eb..a13269745c167 100644 --- a/clang/test/Driver/aarch64-v8a.c +++ b/clang/test/Driver/aarch64-v8a.c @@ -12,7 +12,7 @@ // RUN: %clang --target=aarch64 -mlittle-endian -march=armv8-a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV8A %s // RUN: %clang --target=aarch64_be -mlittle-endian -march=armv8a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV8A %s // RUN: %clang --target=aarch64_be -mlittle-endian -march=armv8-a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV8A %s -// GENERICV8A: "-cc1"{{.*}} "-triple" "aarch64{{(--)?}}"{{.*}} "-target-cpu" "generic"{{.*}} "-target-feature" "+v8a"{{.*}} "-target-feature" "+neon"{{.*}} +// GENERICV8A: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}"{{.*}} "-target-cpu" "generic"{{.*}} "-target-feature" "+v8a"{{.*}} "-target-feature" "+neon"{{.*}} // RUN: %clang --target=arm64 -march=armv8a -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-GENERICV8A %s // RUN: %clang --target=arm64 -march=armv8-a -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-GENERICV8A %s diff --git a/clang/test/Driver/print-enabled-extensions/aarch64-grace.c b/clang/test/Driver/print-enabled-extensions/aarch64-grace.c index a8ab66e47fb5d..9d450e62d4991 100644 --- a/clang/test/Driver/print-enabled-extensions/aarch64-grace.c +++ b/clang/test/Driver/print-enabled-extensions/aarch64-grace.c @@ -65,4 +65,4 @@ // RUN: env LLVM_CPUINFO=%S/../Inputs/cpunative/grace %clang --target=aarch64 -mcpu=native -### -c %s 2>&1 | FileCheck -check-prefix=NEOVERSE-V2 %s // RUN: env LLVM_CPUINFO=%S/../Inputs/cpunative/grace %clang --target=aarch64 -march=native -### -c %s 2>&1 | FileCheck -check-prefix=NEOVERSE-V2 %s -// NEOVERSE-V2: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "neoverse-v2" +// NEOVERSE-V2: "-cc1"{{.*}} "-triple" "aarch64{{(-unknown-unknown)?}}" "-target-cpu" "neoverse-v2" _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
