[llvm-branch-commits] [clang] clang: Avoid intermediate DenseSet of triples (PR #189263)
Matt Arsenault via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Sun Mar 29 09:39:32 PDT 2026
https://github.com/arsenm created https://github.com/llvm/llvm-project/pull/189263
This was computing a DenseSet<StringRef> of triples, but the
only use was to insert all the entries into a multiset. Just
use the multiset in the first place.
>From f789d2c6d5e8b54a2d749dad3e55278364d81423 Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: Sun, 29 Mar 2026 11:19:05 +0200
Subject: [PATCH] clang: Avoid intermediate DenseSet of triples
This was computing a DenseSet<StringRef> of triples, but the
only use was to insert all the entries into a multiset. Just
use the multiset in the first place.
---
clang/lib/Driver/Driver.cpp | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index 6afdf58f3c5da..81792b74089dc 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -945,7 +945,7 @@ getSystemOffloadArchs(Compilation &C, Action::OffloadKind Kind) {
// Attempts to infer the correct offloading toolchain triple by looking at the
// requested offloading kind and architectures.
-static llvm::DenseSet<llvm::StringRef>
+static std::multiset<llvm::StringRef>
inferOffloadToolchains(Compilation &C, Action::OffloadKind Kind) {
std::set<std::string> Archs;
for (Arg *A : C.getInputArgs()) {
@@ -966,7 +966,7 @@ inferOffloadToolchains(Compilation &C, Action::OffloadKind Kind) {
}
}
- llvm::DenseSet<llvm::StringRef> Triples;
+ std::multiset<llvm::StringRef> Triples;
for (llvm::StringRef Arch : Archs) {
OffloadArch ID = StringToOffloadArch(Arch);
if (ID == OffloadArch::Unknown)
@@ -976,23 +976,23 @@ inferOffloadToolchains(Compilation &C, Action::OffloadKind Kind) {
if (Kind == Action::OFK_HIP && !IsAMDOffloadArch(ID)) {
C.getDriver().Diag(clang::diag::err_drv_offload_bad_gpu_arch)
<< "HIP" << Arch;
- return llvm::DenseSet<llvm::StringRef>();
+ return {};
}
if (Kind == Action::OFK_Cuda && !IsNVIDIAOffloadArch(ID)) {
C.getDriver().Diag(clang::diag::err_drv_offload_bad_gpu_arch)
<< "CUDA" << Arch;
- return llvm::DenseSet<llvm::StringRef>();
+ return {};
}
if (Kind == Action::OFK_OpenMP &&
(ID == OffloadArch::Unknown || ID == OffloadArch::Unused)) {
C.getDriver().Diag(clang::diag::err_drv_failed_to_deduce_target_from_arch)
<< Arch;
- return llvm::DenseSet<llvm::StringRef>();
+ return {};
}
if (ID == OffloadArch::Unknown || ID == OffloadArch::Unused) {
C.getDriver().Diag(clang::diag::err_drv_offload_bad_gpu_arch)
<< "offload" << Arch;
- return llvm::DenseSet<llvm::StringRef>();
+ return {};
}
llvm::StringRef TripleStr =
@@ -1102,8 +1102,7 @@ void Driver::CreateOffloadingDeviceToolChains(Compilation &C,
->getAsString(C.getInputArgs());
} else if (Kinds.size() > 0) {
for (Action::OffloadKind Kind : Kinds) {
- llvm::DenseSet<llvm::StringRef> Derived = inferOffloadToolchains(C, Kind);
- Triples.insert(Derived.begin(), Derived.end());
+ Triples = inferOffloadToolchains(C, Kind);
}
}
More information about the llvm-branch-commits
mailing list