aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Driver/Driver.cpp
diff options
context:
space:
mode:
authorJoseph Huber <huberjn@outlook.com>2025-07-02 10:26:32 -0500
committerGitHub <noreply@github.com>2025-07-02 10:26:32 -0500
commitd04d2557255a55aa3df5f76cfe7ee7cef7bf99a4 (patch)
treec00378389839411aa2c121bddb815f5d6193e72e /clang/lib/Driver/Driver.cpp
parentd74d4ffa3342a97bcdfceae75616c755f83b3ca2 (diff)
downloadllvm-d04d2557255a55aa3df5f76cfe7ee7cef7bf99a4.zip
llvm-d04d2557255a55aa3df5f76cfe7ee7cef7bf99a4.tar.gz
llvm-d04d2557255a55aa3df5f76cfe7ee7cef7bf99a4.tar.bz2
[Clang] Properly use `CommaJoined` for `--offload-arch` (#146687)
Summary: This didn't use the built-in 'CommaJoined' feature for arguments and parsed out the strings manually. This patch simplifies this by just using the present functionality.
Diffstat (limited to 'clang/lib/Driver/Driver.cpp')
-rw-r--r--clang/lib/Driver/Driver.cpp23
1 files changed, 10 insertions, 13 deletions
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index d86f47b..3b70310 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -1090,19 +1090,16 @@ void Driver::CreateOffloadingDeviceToolChains(Compilation &C,
llvm::Triple AMDTriple("amdgcn-amd-amdhsa");
llvm::Triple NVPTXTriple("nvptx64-nvidia-cuda");
- for (StringRef A :
+ for (StringRef Arch :
C.getInputArgs().getAllArgValues(options::OPT_offload_arch_EQ)) {
- for (StringRef Arch : llvm::split(A, ",")) {
- bool IsNVPTX = IsNVIDIAOffloadArch(
- StringToOffloadArch(getProcessorFromTargetID(NVPTXTriple, Arch)));
- bool IsAMDGPU = IsAMDOffloadArch(
- StringToOffloadArch(getProcessorFromTargetID(AMDTriple, Arch)));
- if (!IsNVPTX && !IsAMDGPU && !Arch.empty() &&
- !Arch.equals_insensitive("native")) {
- Diag(clang::diag::err_drv_failed_to_deduce_target_from_arch)
- << Arch;
- return;
- }
+ bool IsNVPTX = IsNVIDIAOffloadArch(
+ StringToOffloadArch(getProcessorFromTargetID(NVPTXTriple, Arch)));
+ bool IsAMDGPU = IsAMDOffloadArch(
+ StringToOffloadArch(getProcessorFromTargetID(AMDTriple, Arch)));
+ if (!IsNVPTX && !IsAMDGPU && !Arch.empty() &&
+ !Arch.equals_insensitive("native")) {
+ Diag(clang::diag::err_drv_failed_to_deduce_target_from_arch) << Arch;
+ return;
}
}
@@ -4792,7 +4789,7 @@ Driver::getOffloadArchs(Compilation &C, const llvm::opt::DerivedArgList &Args,
// Add or remove the seen architectures in order of appearance. If an
// invalid architecture is given we simply exit.
if (Arg->getOption().matches(options::OPT_offload_arch_EQ)) {
- for (StringRef Arch : llvm::split(Arg->getValue(), ",")) {
+ for (StringRef Arch : Arg->getValues()) {
if (Arch == "native" || Arch.empty()) {
auto GPUsOrErr = TC->getSystemGPUArchs(Args);
if (!GPUsOrErr) {