diff options
author | Joseph Huber <huberjn@outlook.com> | 2025-07-02 10:26:32 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-07-02 10:26:32 -0500 |
commit | d04d2557255a55aa3df5f76cfe7ee7cef7bf99a4 (patch) | |
tree | c00378389839411aa2c121bddb815f5d6193e72e /clang/lib/Driver/Driver.cpp | |
parent | d74d4ffa3342a97bcdfceae75616c755f83b3ca2 (diff) | |
download | llvm-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.cpp | 23 |
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) { |