https://github.com/arsenm created https://github.com/llvm/llvm-project/pull/196504
addClangTargetOptions already has an OffloadKind argument, but it kind of doesn't make sense for any function to know the OffloadKind, but not the associated BoundArch. The current process is kind of convoluted. TranslateArgs synthesizes a -mcpu argument from BoundArch, and later addClangTargetOptions re-parses that -mcpu argument each time it wants the architecture. Add this argument so this can be cleaned up in a future change. Co-authored-by: Claude Sonnet 4 <[email protected]> >From 11c0c429c044997734c8abb0962968a0588db407 Mon Sep 17 00:00:00 2001 From: Matt Arsenault <[email protected]> Date: Fri, 8 May 2026 10:32:27 +0100 Subject: [PATCH] clang: Add BoundArch argument to addClangTargetOptions addClangTargetOptions already has an OffloadKind argument, but it kind of doesn't make sense for any function to know the OffloadKind, but not the associated BoundArch. The current process is kind of convoluted. TranslateArgs synthesizes a -mcpu argument from BoundArch, and later addClangTargetOptions re-parses that -mcpu argument each time it wants the architecture. Add this argument so this can be cleaned up in a future change. Co-authored-by: Claude Sonnet 4 <[email protected]> --- clang/include/clang/Driver/ToolChain.h | 6 +++--- clang/lib/Driver/ToolChain.cpp | 2 +- clang/lib/Driver/ToolChains/AIX.cpp | 2 +- clang/lib/Driver/ToolChains/AIX.h | 1 + clang/lib/Driver/ToolChains/AMDGPU.cpp | 12 +++++++----- clang/lib/Driver/ToolChains/AMDGPU.h | 9 ++++++--- clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp | 5 +++-- clang/lib/Driver/ToolChains/AMDGPUOpenMP.h | 1 + clang/lib/Driver/ToolChains/AVR.cpp | 2 +- clang/lib/Driver/ToolChains/AVR.h | 1 + clang/lib/Driver/ToolChains/BareMetal.cpp | 1 + clang/lib/Driver/ToolChains/BareMetal.h | 1 + clang/lib/Driver/ToolChains/CSKYToolChain.cpp | 1 + clang/lib/Driver/ToolChains/CSKYToolChain.h | 1 + clang/lib/Driver/ToolChains/Clang.cpp | 6 ++++-- clang/lib/Driver/ToolChains/Cuda.cpp | 8 +++++--- clang/lib/Driver/ToolChains/Cuda.h | 2 ++ clang/lib/Driver/ToolChains/Darwin.cpp | 14 +++++++++----- clang/lib/Driver/ToolChains/Darwin.h | 10 +++++++--- clang/lib/Driver/ToolChains/Flang.cpp | 2 +- clang/lib/Driver/ToolChains/Fuchsia.cpp | 2 +- clang/lib/Driver/ToolChains/Fuchsia.h | 1 + clang/lib/Driver/ToolChains/Gnu.cpp | 1 + clang/lib/Driver/ToolChains/Gnu.h | 8 +++++--- clang/lib/Driver/ToolChains/HIPAMD.cpp | 5 +++-- clang/lib/Driver/ToolChains/HIPAMD.h | 1 + clang/lib/Driver/ToolChains/HIPSPV.cpp | 5 +++-- clang/lib/Driver/ToolChains/HIPSPV.h | 1 + clang/lib/Driver/ToolChains/Hexagon.cpp | 1 + clang/lib/Driver/ToolChains/Hexagon.h | 8 +++++--- clang/lib/Driver/ToolChains/Linux.cpp | 4 +++- clang/lib/Driver/ToolChains/Linux.h | 1 + clang/lib/Driver/ToolChains/MSP430.cpp | 1 + clang/lib/Driver/ToolChains/MSP430.h | 1 + clang/lib/Driver/ToolChains/MSVC.cpp | 2 +- clang/lib/Driver/ToolChains/MSVC.h | 1 + clang/lib/Driver/ToolChains/MinGW.cpp | 2 +- clang/lib/Driver/ToolChains/MinGW.h | 1 + clang/lib/Driver/ToolChains/NetBSD.cpp | 2 +- clang/lib/Driver/ToolChains/NetBSD.h | 8 +++++--- clang/lib/Driver/ToolChains/PS4CPU.cpp | 2 +- clang/lib/Driver/ToolChains/PS4CPU.h | 1 + clang/lib/Driver/ToolChains/SPIRVOpenMP.cpp | 2 +- clang/lib/Driver/ToolChains/SPIRVOpenMP.h | 1 + clang/lib/Driver/ToolChains/SYCL.cpp | 5 +++-- clang/lib/Driver/ToolChains/SYCL.h | 1 + clang/lib/Driver/ToolChains/VEToolchain.cpp | 1 + clang/lib/Driver/ToolChains/VEToolchain.h | 1 + clang/lib/Driver/ToolChains/WebAssembly.cpp | 1 + clang/lib/Driver/ToolChains/WebAssembly.h | 1 + clang/lib/Driver/ToolChains/XCore.cpp | 1 + clang/lib/Driver/ToolChains/XCore.h | 8 +++++--- clang/lib/Driver/ToolChains/ZOS.cpp | 2 +- clang/lib/Driver/ToolChains/ZOS.h | 1 + 54 files changed, 115 insertions(+), 56 deletions(-) diff --git a/clang/include/clang/Driver/ToolChain.h b/clang/include/clang/Driver/ToolChain.h index 25f5f83ad7b98..117563ef5c950 100644 --- a/clang/include/clang/Driver/ToolChain.h +++ b/clang/include/clang/Driver/ToolChain.h @@ -720,9 +720,9 @@ class ToolChain { llvm::opt::ArgStringList &CC1Args) const; /// Add options that need to be passed to cc1 for this target. - virtual void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, - llvm::opt::ArgStringList &CC1Args, - Action::OffloadKind DeviceOffloadKind) const; + virtual void addClangTargetOptions( + const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const; /// Add options that need to be passed to cc1as for this target. virtual void diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp index 98936b25ce650..a68d39deda915 100644 --- a/clang/lib/Driver/ToolChain.cpp +++ b/clang/lib/Driver/ToolChain.cpp @@ -1421,7 +1421,7 @@ void ToolChain::AddClangSystemIncludeArgs(const ArgList &DriverArgs, } void ToolChain::addClangTargetOptions( - const ArgList &DriverArgs, ArgStringList &CC1Args, + const ArgList &DriverArgs, ArgStringList &CC1Args, StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const {} void ToolChain::addClangCC1ASTargetOptions(const ArgList &Args, diff --git a/clang/lib/Driver/ToolChains/AIX.cpp b/clang/lib/Driver/ToolChains/AIX.cpp index e36910f9aaf46..cae6c10efba36 100644 --- a/clang/lib/Driver/ToolChains/AIX.cpp +++ b/clang/lib/Driver/ToolChains/AIX.cpp @@ -558,7 +558,7 @@ static void addTocDataOptions(const llvm::opt::ArgList &Args, void AIX::addClangTargetOptions( const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CC1Args, - Action::OffloadKind DeviceOffloadingKind) const { + StringRef BoundArch, Action::OffloadKind DeviceOffloadingKind) const { Args.AddLastArg(CC1Args, options::OPT_mignore_xcoff_visibility); Args.AddLastArg(CC1Args, options::OPT_mdefault_visibility_export_mapping_EQ); Args.addOptInFlag(CC1Args, options::OPT_mxcoff_roptr, options::OPT_mno_xcoff_roptr); diff --git a/clang/lib/Driver/ToolChains/AIX.h b/clang/lib/Driver/ToolChains/AIX.h index 6183c9e1b1643..afe0556d68ed4 100644 --- a/clang/lib/Driver/ToolChains/AIX.h +++ b/clang/lib/Driver/ToolChains/AIX.h @@ -85,6 +85,7 @@ class LLVM_LIBRARY_VISIBILITY AIX : public ToolChain { void addClangTargetOptions( const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadingKind) const override; void addProfileRTLibs(const llvm::opt::ArgList &Args, diff --git a/clang/lib/Driver/ToolChains/AMDGPU.cpp b/clang/lib/Driver/ToolChains/AMDGPU.cpp index b457ee2cde1c3..0f87043cf801e 100644 --- a/clang/lib/Driver/ToolChains/AMDGPU.cpp +++ b/clang/lib/Driver/ToolChains/AMDGPU.cpp @@ -840,9 +840,11 @@ ROCMToolChain::ROCMToolChain(const Driver &D, const llvm::Triple &Triple, } void AMDGPUToolChain::addClangTargetOptions( - const llvm::opt::ArgList &DriverArgs, - llvm::opt::ArgStringList &CC1Args, - Action::OffloadKind DeviceOffloadingKind) const { + const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadingKind) const { + assert(DeviceOffloadingKind == Action::OFK_None && BoundArch.empty() && + "this toolchain is for non-offloading cases"); + // Default to "hidden" visibility, as object level linking will not be // supported for the foreseeable future. // TODO: remove the SPIR-V bypass once it can encode (hidden) visibility. @@ -955,8 +957,8 @@ AMDGPUToolChain::getSystemGPUArchs(const ArgList &Args) const { void ROCMToolChain::addClangTargetOptions( const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, - Action::OffloadKind DeviceOffloadingKind) const { - AMDGPUToolChain::addClangTargetOptions(DriverArgs, CC1Args, + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadingKind) const { + AMDGPUToolChain::addClangTargetOptions(DriverArgs, CC1Args, BoundArch, DeviceOffloadingKind); // For the OpenCL case where there is no offload target, accept -nostdlib to diff --git a/clang/lib/Driver/ToolChains/AMDGPU.h b/clang/lib/Driver/ToolChains/AMDGPU.h index 20b9365c91bbf..f8de037d3d555 100644 --- a/clang/lib/Driver/ToolChains/AMDGPU.h +++ b/clang/lib/Driver/ToolChains/AMDGPU.h @@ -76,9 +76,11 @@ class LLVM_LIBRARY_VISIBILITY AMDGPUToolChain : public Generic_ELF { TranslateArgs(const llvm::opt::DerivedArgList &Args, StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const override; - void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, - llvm::opt::ArgStringList &CC1Args, - Action::OffloadKind DeviceOffloadKind) const override; + void + addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, + llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, + Action::OffloadKind DeviceOffloadKind) const override; void AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const override; @@ -143,6 +145,7 @@ class LLVM_LIBRARY_VISIBILITY ROCMToolChain : public AMDGPUToolChain { void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const override; // Returns a list of device library names shared by different languages diff --git a/clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp b/clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp index 1a30875807d30..1f8b078dc4f44 100644 --- a/clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp +++ b/clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp @@ -32,8 +32,9 @@ AMDGPUOpenMPToolChain::AMDGPUOpenMPToolChain(const Driver &D, void AMDGPUOpenMPToolChain::addClangTargetOptions( const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, - Action::OffloadKind DeviceOffloadingKind) const { - HostTC.addClangTargetOptions(DriverArgs, CC1Args, DeviceOffloadingKind); + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadingKind) const { + HostTC.addClangTargetOptions(DriverArgs, CC1Args, BoundArch, + DeviceOffloadingKind); assert(DeviceOffloadingKind == Action::OFK_OpenMP && "Only OpenMP offloading kinds are supported."); diff --git a/clang/lib/Driver/ToolChains/AMDGPUOpenMP.h b/clang/lib/Driver/ToolChains/AMDGPUOpenMP.h index cbafdf57fa466..4262640369780 100644 --- a/clang/lib/Driver/ToolChains/AMDGPUOpenMP.h +++ b/clang/lib/Driver/ToolChains/AMDGPUOpenMP.h @@ -39,6 +39,7 @@ class LLVM_LIBRARY_VISIBILITY AMDGPUOpenMPToolChain final void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const override; void addClangWarningOptions(llvm::opt::ArgStringList &CC1Args) const override; CXXStdlibType GetCXXStdlibType(const llvm::opt::ArgList &Args) const override; diff --git a/clang/lib/Driver/ToolChains/AVR.cpp b/clang/lib/Driver/ToolChains/AVR.cpp index 588255dc5a0cd..8064bfe3e3356 100644 --- a/clang/lib/Driver/ToolChains/AVR.cpp +++ b/clang/lib/Driver/ToolChains/AVR.cpp @@ -466,7 +466,7 @@ void AVRToolChain::AddClangSystemIncludeArgs(const ArgList &DriverArgs, void AVRToolChain::addClangTargetOptions( const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, - Action::OffloadKind DeviceOffloadKind) const { + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const { // Reject C/C++ compilation for avr1 devices since they have no SRAM. const Driver &D = getDriver(); std::string CPU = getCPUName(D, DriverArgs, getTriple()); diff --git a/clang/lib/Driver/ToolChains/AVR.h b/clang/lib/Driver/ToolChains/AVR.h index f4d74eb944257..e232fb3c0281c 100644 --- a/clang/lib/Driver/ToolChains/AVR.h +++ b/clang/lib/Driver/ToolChains/AVR.h @@ -29,6 +29,7 @@ class LLVM_LIBRARY_VISIBILITY AVRToolChain : public Generic_ELF { void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const override; std::optional<std::string> findAVRLibcInstallation() const; diff --git a/clang/lib/Driver/ToolChains/BareMetal.cpp b/clang/lib/Driver/ToolChains/BareMetal.cpp index 3ba592666647a..3c1b76c513faf 100644 --- a/clang/lib/Driver/ToolChains/BareMetal.cpp +++ b/clang/lib/Driver/ToolChains/BareMetal.cpp @@ -352,6 +352,7 @@ void BareMetal::AddClangSystemIncludeArgs(const ArgList &DriverArgs, void BareMetal::addClangTargetOptions(const ArgList &DriverArgs, ArgStringList &CC1Args, + StringRef BoundArch, Action::OffloadKind) const { CC1Args.push_back("-nostdsysteminc"); } diff --git a/clang/lib/Driver/ToolChains/BareMetal.h b/clang/lib/Driver/ToolChains/BareMetal.h index 57bfb73e3399b..0530e51a08f1f 100644 --- a/clang/lib/Driver/ToolChains/BareMetal.h +++ b/clang/lib/Driver/ToolChains/BareMetal.h @@ -68,6 +68,7 @@ class LLVM_LIBRARY_VISIBILITY BareMetal : public Generic_ELF { void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const override; void AddClangCXXStdlibIncludeArgs( const llvm::opt::ArgList &DriverArgs, diff --git a/clang/lib/Driver/ToolChains/CSKYToolChain.cpp b/clang/lib/Driver/ToolChains/CSKYToolChain.cpp index c561d7d38da5b..670abb4e75082 100644 --- a/clang/lib/Driver/ToolChains/CSKYToolChain.cpp +++ b/clang/lib/Driver/ToolChains/CSKYToolChain.cpp @@ -75,6 +75,7 @@ CSKYToolChain::GetUnwindLibType(const llvm::opt::ArgList &Args) const { void CSKYToolChain::addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, Action::OffloadKind) const { CC1Args.push_back("-nostdsysteminc"); } diff --git a/clang/lib/Driver/ToolChains/CSKYToolChain.h b/clang/lib/Driver/ToolChains/CSKYToolChain.h index a57324a426416..82f5acb42e98f 100644 --- a/clang/lib/Driver/ToolChains/CSKYToolChain.h +++ b/clang/lib/Driver/ToolChains/CSKYToolChain.h @@ -23,6 +23,7 @@ class LLVM_LIBRARY_VISIBILITY CSKYToolChain : public Generic_ELF { void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, Action::OffloadKind) const override; RuntimeLibType GetDefaultRuntimeLibType() const override; UnwindLibType GetUnwindLibType(const llvm::opt::ArgList &Args) const override; diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index bdffa4fdd7e6b..db50afcb70441 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -5396,7 +5396,8 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.push_back("-disable-llvm-passes"); // Render target options. - TC.addClangTargetOptions(Args, CmdArgs, JA.getOffloadingDeviceKind()); + TC.addClangTargetOptions(Args, CmdArgs, JA.getOffloadingArch(), + JA.getOffloadingDeviceKind()); // reject options that shouldn't be supported in bitcode // also reject kernel/kext @@ -6164,7 +6165,8 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, /*ForAS*/ false, /*IsAux*/ true); } - TC.addClangTargetOptions(Args, CmdArgs, JA.getOffloadingDeviceKind()); + TC.addClangTargetOptions(Args, CmdArgs, JA.getOffloadingArch(), + JA.getOffloadingDeviceKind()); addMCModel(D, Args, Triple, RelocationModel, CmdArgs); diff --git a/clang/lib/Driver/ToolChains/Cuda.cpp b/clang/lib/Driver/ToolChains/Cuda.cpp index 2064ba4fc1a9c..e402a30f1ee18 100644 --- a/clang/lib/Driver/ToolChains/Cuda.cpp +++ b/clang/lib/Driver/ToolChains/Cuda.cpp @@ -787,7 +787,8 @@ NVPTXToolChain::TranslateArgs(const llvm::opt::DerivedArgList &Args, void NVPTXToolChain::addClangTargetOptions( const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, - Action::OffloadKind DeviceOffloadingKind) const {} + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadingKind) const { +} void NVPTXToolChain::AddClangSystemIncludeArgs(const ArgList &DriverArgs, ArgStringList &CC1Args) const { @@ -874,8 +875,9 @@ CudaToolChain::CudaToolChain(const Driver &D, const llvm::Triple &Triple, void CudaToolChain::addClangTargetOptions( const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, - Action::OffloadKind DeviceOffloadingKind) const { - HostTC.addClangTargetOptions(DriverArgs, CC1Args, DeviceOffloadingKind); + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadingKind) const { + HostTC.addClangTargetOptions(DriverArgs, CC1Args, BoundArch, + DeviceOffloadingKind); StringRef GpuArch = DriverArgs.getLastArgValue(options::OPT_march_EQ); assert((DeviceOffloadingKind == Action::OFK_OpenMP || diff --git a/clang/lib/Driver/ToolChains/Cuda.h b/clang/lib/Driver/ToolChains/Cuda.h index 6193328908828..4844d908bdec2 100644 --- a/clang/lib/Driver/ToolChains/Cuda.h +++ b/clang/lib/Driver/ToolChains/Cuda.h @@ -91,6 +91,7 @@ class LLVM_LIBRARY_VISIBILITY NVPTXToolChain : public ToolChain { void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const override; void AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs, @@ -149,6 +150,7 @@ class LLVM_LIBRARY_VISIBILITY CudaToolChain : public NVPTXToolChain { void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const override; llvm::DenormalMode getDefaultDenormalModeForType( diff --git a/clang/lib/Driver/ToolChains/Darwin.cpp b/clang/lib/Driver/ToolChains/Darwin.cpp index 232e6a4e574aa..67f2e8cb7340f 100644 --- a/clang/lib/Driver/ToolChains/Darwin.cpp +++ b/clang/lib/Driver/ToolChains/Darwin.cpp @@ -1342,9 +1342,10 @@ void DarwinClang::addClangWarningOptions(ArgStringList &CC1Args) const { void DarwinClang::addClangTargetOptions( const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, - Action::OffloadKind DeviceOffloadKind) const { + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const { - Darwin::addClangTargetOptions(DriverArgs, CC1Args, DeviceOffloadKind); + Darwin::addClangTargetOptions(DriverArgs, CC1Args, BoundArch, + DeviceOffloadKind); } /// Take a path that speculatively points into Xcode and return the @@ -3432,9 +3433,11 @@ bool Darwin::isSizedDeallocationUnavailable() const { void MachO::addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const { - ToolChain::addClangTargetOptions(DriverArgs, CC1Args, DeviceOffloadKind); + ToolChain::addClangTargetOptions(DriverArgs, CC1Args, BoundArch, + DeviceOffloadKind); // On arm64e, we enable all the features required for the Darwin userspace // ABI @@ -3481,9 +3484,10 @@ void MachO::addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, void Darwin::addClangTargetOptions( const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, - Action::OffloadKind DeviceOffloadKind) const { + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const { - MachO::addClangTargetOptions(DriverArgs, CC1Args, DeviceOffloadKind); + MachO::addClangTargetOptions(DriverArgs, CC1Args, BoundArch, + DeviceOffloadKind); // When compiling device code (e.g. SPIR-V for HIP), skip host-specific // flags like -faligned-alloc-unavailable and -fno-sized-deallocation diff --git a/clang/lib/Driver/ToolChains/Darwin.h b/clang/lib/Driver/ToolChains/Darwin.h index 6d1da017d3df1..5e433ef72896f 100644 --- a/clang/lib/Driver/ToolChains/Darwin.h +++ b/clang/lib/Driver/ToolChains/Darwin.h @@ -148,6 +148,7 @@ class LLVM_LIBRARY_VISIBILITY MachO : public ToolChain { void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const override; private: @@ -593,9 +594,11 @@ class LLVM_LIBRARY_VISIBILITY Darwin : public AppleMachO { /// the c++ standard library of the deployment target we are targeting. bool isSizedDeallocationUnavailable() const; - void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, - llvm::opt::ArgStringList &CC1Args, - Action::OffloadKind DeviceOffloadKind) const override; + void + addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, + llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, + Action::OffloadKind DeviceOffloadKind) const override; void addClangCC1ASTargetOptions( const llvm::opt::ArgList &Args, @@ -682,6 +685,7 @@ class LLVM_LIBRARY_VISIBILITY DarwinClang : public Darwin { void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const override; void AddLinkARCArgs(const llvm::opt::ArgList &Args, diff --git a/clang/lib/Driver/ToolChains/Flang.cpp b/clang/lib/Driver/ToolChains/Flang.cpp index ce503b74295e4..7a7a69e1b13d0 100644 --- a/clang/lib/Driver/ToolChains/Flang.cpp +++ b/clang/lib/Driver/ToolChains/Flang.cpp @@ -532,7 +532,7 @@ void Flang::AddAMDGPUTargetArgs(const ArgList &Args, } const ToolChain &TC = getToolChain(); - TC.addClangTargetOptions(Args, CmdArgs, Action::OffloadKind::OFK_OpenMP); + TC.addClangTargetOptions(Args, CmdArgs, "", Action::OffloadKind::OFK_OpenMP); } void Flang::AddNVPTXTargetArgs(const ArgList &Args, diff --git a/clang/lib/Driver/ToolChains/Fuchsia.cpp b/clang/lib/Driver/ToolChains/Fuchsia.cpp index d4bc589ad4137..309b5e9cf02e1 100644 --- a/clang/lib/Driver/ToolChains/Fuchsia.cpp +++ b/clang/lib/Driver/ToolChains/Fuchsia.cpp @@ -367,7 +367,7 @@ ToolChain::CXXStdlibType Fuchsia::GetCXXStdlibType(const ArgList &Args) const { } void Fuchsia::addClangTargetOptions(const ArgList &DriverArgs, - ArgStringList &CC1Args, + ArgStringList &CC1Args, StringRef BoundArch, Action::OffloadKind) const { if (!DriverArgs.hasFlag(options::OPT_fuse_init_array, options::OPT_fno_use_init_array, true)) diff --git a/clang/lib/Driver/ToolChains/Fuchsia.h b/clang/lib/Driver/ToolChains/Fuchsia.h index eb4c8f560d3c0..f3edf7c9c619c 100644 --- a/clang/lib/Driver/ToolChains/Fuchsia.h +++ b/clang/lib/Driver/ToolChains/Fuchsia.h @@ -99,6 +99,7 @@ class LLVM_LIBRARY_VISIBILITY Fuchsia : public ToolChain { void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const override; void AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs, diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp index 53cef4a934f4f..85b2b5eccd44f 100644 --- a/clang/lib/Driver/ToolChains/Gnu.cpp +++ b/clang/lib/Driver/ToolChains/Gnu.cpp @@ -3498,6 +3498,7 @@ void Generic_ELF::anchor() {} void Generic_ELF::addClangTargetOptions(const ArgList &DriverArgs, ArgStringList &CC1Args, + StringRef BoundArch, Action::OffloadKind) const { if (!DriverArgs.hasFlag(options::OPT_fuse_init_array, options::OPT_fno_use_init_array, true)) diff --git a/clang/lib/Driver/ToolChains/Gnu.h b/clang/lib/Driver/ToolChains/Gnu.h index 5fe143b4aa035..a4c4de65cd44f 100644 --- a/clang/lib/Driver/ToolChains/Gnu.h +++ b/clang/lib/Driver/ToolChains/Gnu.h @@ -440,9 +440,11 @@ class LLVM_LIBRARY_VISIBILITY Generic_ELF : public Generic_GCC { const llvm::opt::ArgList &Args) : Generic_GCC(D, Triple, Args) {} - void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, - llvm::opt::ArgStringList &CC1Args, - Action::OffloadKind DeviceOffloadKind) const override; + void + addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, + llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, + Action::OffloadKind DeviceOffloadKind) const override; virtual std::string getDynamicLinker(const llvm::opt::ArgList &Args) const { return {}; diff --git a/clang/lib/Driver/ToolChains/HIPAMD.cpp b/clang/lib/Driver/ToolChains/HIPAMD.cpp index b7732c9274725..575666bc6e89a 100644 --- a/clang/lib/Driver/ToolChains/HIPAMD.cpp +++ b/clang/lib/Driver/ToolChains/HIPAMD.cpp @@ -236,8 +236,9 @@ HIPAMDToolChain::HIPAMDToolChain(const Driver &D, const llvm::Triple &Triple, void HIPAMDToolChain::addClangTargetOptions( const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, - Action::OffloadKind DeviceOffloadingKind) const { - HostTC.addClangTargetOptions(DriverArgs, CC1Args, DeviceOffloadingKind); + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadingKind) const { + HostTC.addClangTargetOptions(DriverArgs, CC1Args, BoundArch, + DeviceOffloadingKind); assert(DeviceOffloadingKind == Action::OFK_HIP && "Only HIP offloading kinds are supported for GPUs."); diff --git a/clang/lib/Driver/ToolChains/HIPAMD.h b/clang/lib/Driver/ToolChains/HIPAMD.h index 7c6540fff235a..f52c9b19ff74e 100644 --- a/clang/lib/Driver/ToolChains/HIPAMD.h +++ b/clang/lib/Driver/ToolChains/HIPAMD.h @@ -67,6 +67,7 @@ class LLVM_LIBRARY_VISIBILITY HIPAMDToolChain final : public ROCMToolChain { void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const override; void addClangWarningOptions(llvm::opt::ArgStringList &CC1Args) const override; CXXStdlibType GetCXXStdlibType(const llvm::opt::ArgList &Args) const override; diff --git a/clang/lib/Driver/ToolChains/HIPSPV.cpp b/clang/lib/Driver/ToolChains/HIPSPV.cpp index da601abe4c291..f3718e87a7b5a 100644 --- a/clang/lib/Driver/ToolChains/HIPSPV.cpp +++ b/clang/lib/Driver/ToolChains/HIPSPV.cpp @@ -152,7 +152,7 @@ HIPSPVToolChain::HIPSPVToolChain(const Driver &D, const llvm::Triple &Triple, void HIPSPVToolChain::addClangTargetOptions( const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, - Action::OffloadKind DeviceOffloadingKind) const { + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadingKind) const { if (!HostTC) { assert(DeviceOffloadingKind == Action::OFK_None && @@ -160,7 +160,8 @@ void HIPSPVToolChain::addClangTargetOptions( return; } - HostTC->addClangTargetOptions(DriverArgs, CC1Args, DeviceOffloadingKind); + HostTC->addClangTargetOptions(DriverArgs, CC1Args, BoundArch, + DeviceOffloadingKind); assert(DeviceOffloadingKind == Action::OFK_HIP && "Only HIP offloading kinds are supported for GPUs."); diff --git a/clang/lib/Driver/ToolChains/HIPSPV.h b/clang/lib/Driver/ToolChains/HIPSPV.h index 068040ee4f491..7f823d3a8c8ca 100644 --- a/clang/lib/Driver/ToolChains/HIPSPV.h +++ b/clang/lib/Driver/ToolChains/HIPSPV.h @@ -58,6 +58,7 @@ class LLVM_LIBRARY_VISIBILITY HIPSPVToolChain final : public ToolChain { void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const override; void addClangWarningOptions(llvm::opt::ArgStringList &CC1Args) const override; CXXStdlibType GetCXXStdlibType(const llvm::opt::ArgList &Args) const override; diff --git a/clang/lib/Driver/ToolChains/Hexagon.cpp b/clang/lib/Driver/ToolChains/Hexagon.cpp index e0e5ab5c1fde7..3f130fd21d25a 100644 --- a/clang/lib/Driver/ToolChains/Hexagon.cpp +++ b/clang/lib/Driver/ToolChains/Hexagon.cpp @@ -769,6 +769,7 @@ unsigned HexagonToolChain::getOptimizationLevel( void HexagonToolChain::addClangTargetOptions(const ArgList &DriverArgs, ArgStringList &CC1Args, + StringRef BoundArch, Action::OffloadKind) const { bool UseInitArrayDefault = getTriple().isMusl(); diff --git a/clang/lib/Driver/ToolChains/Hexagon.h b/clang/lib/Driver/ToolChains/Hexagon.h index f250344e5cc93..9c4a92ba79e67 100644 --- a/clang/lib/Driver/ToolChains/Hexagon.h +++ b/clang/lib/Driver/ToolChains/Hexagon.h @@ -75,9 +75,11 @@ class LLVM_LIBRARY_VISIBILITY HexagonToolChain : public Linux { const llvm::opt::ArgList &Args); ~HexagonToolChain() override; - void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, - llvm::opt::ArgStringList &CC1Args, - Action::OffloadKind DeviceOffloadKind) const override; + void + addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, + llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, + Action::OffloadKind DeviceOffloadKind) const override; void AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const override; diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp index 99bcae9bb9598..1f2e636110261 100644 --- a/clang/lib/Driver/ToolChains/Linux.cpp +++ b/clang/lib/Driver/ToolChains/Linux.cpp @@ -552,11 +552,13 @@ static void handlePAuthABI(const Driver &D, const ArgList &DriverArgs, void Linux::addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, + StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const { llvm::Triple Triple(ComputeEffectiveClangTriple(DriverArgs)); if (Triple.isAArch64() && Triple.getEnvironment() == llvm::Triple::PAuthTest) handlePAuthABI(getDriver(), DriverArgs, CC1Args); - Generic_ELF::addClangTargetOptions(DriverArgs, CC1Args, DeviceOffloadKind); + Generic_ELF::addClangTargetOptions(DriverArgs, CC1Args, BoundArch, + DeviceOffloadKind); } std::string Linux::getDynamicLinker(const ArgList &Args) const { diff --git a/clang/lib/Driver/ToolChains/Linux.h b/clang/lib/Driver/ToolChains/Linux.h index cc3f3cc21210f..4209e70c10858 100644 --- a/clang/lib/Driver/ToolChains/Linux.h +++ b/clang/lib/Driver/ToolChains/Linux.h @@ -61,6 +61,7 @@ class LLVM_LIBRARY_VISIBILITY Linux : public Generic_ELF { void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const override; std::string getDynamicLinker(const llvm::opt::ArgList &Args) const override; diff --git a/clang/lib/Driver/ToolChains/MSP430.cpp b/clang/lib/Driver/ToolChains/MSP430.cpp index 3cc56bb7e832e..5152512cf28da 100644 --- a/clang/lib/Driver/ToolChains/MSP430.cpp +++ b/clang/lib/Driver/ToolChains/MSP430.cpp @@ -157,6 +157,7 @@ void MSP430ToolChain::AddClangSystemIncludeArgs(const ArgList &DriverArgs, void MSP430ToolChain::addClangTargetOptions(const ArgList &DriverArgs, ArgStringList &CC1Args, + StringRef BoundArch, Action::OffloadKind) const { CC1Args.push_back("-nostdsysteminc"); diff --git a/clang/lib/Driver/ToolChains/MSP430.h b/clang/lib/Driver/ToolChains/MSP430.h index a224c63754118..41935e1b5173a 100644 --- a/clang/lib/Driver/ToolChains/MSP430.h +++ b/clang/lib/Driver/ToolChains/MSP430.h @@ -34,6 +34,7 @@ class LLVM_LIBRARY_VISIBILITY MSP430ToolChain : public Generic_ELF { llvm::opt::ArgStringList &CC1Args) const override; void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, Action::OffloadKind) const override; bool isPICDefault() const override { return false; } diff --git a/clang/lib/Driver/ToolChains/MSVC.cpp b/clang/lib/Driver/ToolChains/MSVC.cpp index 2ab954ff61414..e0d05e2acf07f 100644 --- a/clang/lib/Driver/ToolChains/MSVC.cpp +++ b/clang/lib/Driver/ToolChains/MSVC.cpp @@ -1036,7 +1036,7 @@ MSVCToolChain::TranslateArgs(const llvm::opt::DerivedArgList &Args, } void MSVCToolChain::addClangTargetOptions( - const ArgList &DriverArgs, ArgStringList &CC1Args, + const ArgList &DriverArgs, ArgStringList &CC1Args, StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const { // MSVC STL kindly allows removing all usages of typeid by defining // _HAS_STATIC_RTTI to 0. Do so, when compiling with -fno-rtti diff --git a/clang/lib/Driver/ToolChains/MSVC.h b/clang/lib/Driver/ToolChains/MSVC.h index c8e49963a472e..637c0d6df108e 100644 --- a/clang/lib/Driver/ToolChains/MSVC.h +++ b/clang/lib/Driver/ToolChains/MSVC.h @@ -125,6 +125,7 @@ class LLVM_LIBRARY_VISIBILITY MSVCToolChain : public ToolChain { void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const override; protected: diff --git a/clang/lib/Driver/ToolChains/MinGW.cpp b/clang/lib/Driver/ToolChains/MinGW.cpp index 7f8aec6482b5f..c4cd3973c7ff9 100644 --- a/clang/lib/Driver/ToolChains/MinGW.cpp +++ b/clang/lib/Driver/ToolChains/MinGW.cpp @@ -745,7 +745,7 @@ void toolchains::MinGW::AddClangSystemIncludeArgs(const ArgList &DriverArgs, void toolchains::MinGW::addClangTargetOptions( const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, - Action::OffloadKind DeviceOffloadKind) const { + StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const { if (Arg *A = DriverArgs.getLastArg(options::OPT_mguard_EQ)) { StringRef GuardArgs = A->getValue(); if (GuardArgs == "none") { diff --git a/clang/lib/Driver/ToolChains/MinGW.h b/clang/lib/Driver/ToolChains/MinGW.h index 1730da48cd434..c21abd19d7bd8 100644 --- a/clang/lib/Driver/ToolChains/MinGW.h +++ b/clang/lib/Driver/ToolChains/MinGW.h @@ -84,6 +84,7 @@ class LLVM_LIBRARY_VISIBILITY MinGW : public ToolChain { void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const override; void AddClangCXXStdlibIncludeArgs( const llvm::opt::ArgList &DriverArgs, diff --git a/clang/lib/Driver/ToolChains/NetBSD.cpp b/clang/lib/Driver/ToolChains/NetBSD.cpp index ea722b59853d6..efb2a01e6fadc 100644 --- a/clang/lib/Driver/ToolChains/NetBSD.cpp +++ b/clang/lib/Driver/ToolChains/NetBSD.cpp @@ -559,7 +559,7 @@ SanitizerMask NetBSD::getSupportedSanitizers() const { } void NetBSD::addClangTargetOptions(const ArgList &DriverArgs, - ArgStringList &CC1Args, + ArgStringList &CC1Args, StringRef BoundArch, Action::OffloadKind) const { const SanitizerArgs &SanArgs = getSanitizerArgs(DriverArgs); if (SanArgs.hasAnySanitizer()) diff --git a/clang/lib/Driver/ToolChains/NetBSD.h b/clang/lib/Driver/ToolChains/NetBSD.h index 96303acaa0099..a9ccdc00713cc 100644 --- a/clang/lib/Driver/ToolChains/NetBSD.h +++ b/clang/lib/Driver/ToolChains/NetBSD.h @@ -78,9 +78,11 @@ class LLVM_LIBRARY_VISIBILITY NetBSD : public Generic_ELF { SanitizerMask getSupportedSanitizers() const override; - void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, - llvm::opt::ArgStringList &CC1Args, - Action::OffloadKind DeviceOffloadKind) const override; + void + addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, + llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, + Action::OffloadKind DeviceOffloadKind) const override; protected: Tool *buildAssembler() const override; diff --git a/clang/lib/Driver/ToolChains/PS4CPU.cpp b/clang/lib/Driver/ToolChains/PS4CPU.cpp index ac2671a8e8078..fc0db44c18962 100644 --- a/clang/lib/Driver/ToolChains/PS4CPU.cpp +++ b/clang/lib/Driver/ToolChains/PS4CPU.cpp @@ -576,7 +576,7 @@ SanitizerMask toolchains::PS5CPU::getSupportedSanitizers() const { } void toolchains::PS4PS5Base::addClangTargetOptions( - const ArgList &DriverArgs, ArgStringList &CC1Args, + const ArgList &DriverArgs, ArgStringList &CC1Args, StringRef BoundArch, Action::OffloadKind DeviceOffloadingKind) const { // PS4/PS5 do not use init arrays. if (DriverArgs.hasArg(options::OPT_fuse_init_array)) { diff --git a/clang/lib/Driver/ToolChains/PS4CPU.h b/clang/lib/Driver/ToolChains/PS4CPU.h index 456e966c2d400..d566a6cb62d23 100644 --- a/clang/lib/Driver/ToolChains/PS4CPU.h +++ b/clang/lib/Driver/ToolChains/PS4CPU.h @@ -110,6 +110,7 @@ class LLVM_LIBRARY_VISIBILITY PS4PS5Base : public Generic_ELF { void addClangTargetOptions( const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadingKind) const override; llvm::DenormalMode getDefaultDenormalModeForType( diff --git a/clang/lib/Driver/ToolChains/SPIRVOpenMP.cpp b/clang/lib/Driver/ToolChains/SPIRVOpenMP.cpp index 4e09d5eac26fd..161f8939929aa 100644 --- a/clang/lib/Driver/ToolChains/SPIRVOpenMP.cpp +++ b/clang/lib/Driver/ToolChains/SPIRVOpenMP.cpp @@ -22,7 +22,7 @@ SPIRVOpenMPToolChain::SPIRVOpenMPToolChain(const Driver &D, void SPIRVOpenMPToolChain::addClangTargetOptions( const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, - Action::OffloadKind DeviceOffloadingKind) const { + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadingKind) const { if (DeviceOffloadingKind != Action::OFK_OpenMP) return; diff --git a/clang/lib/Driver/ToolChains/SPIRVOpenMP.h b/clang/lib/Driver/ToolChains/SPIRVOpenMP.h index 64404e2a28210..75f9f5626eea4 100644 --- a/clang/lib/Driver/ToolChains/SPIRVOpenMP.h +++ b/clang/lib/Driver/ToolChains/SPIRVOpenMP.h @@ -21,6 +21,7 @@ class LLVM_LIBRARY_VISIBILITY SPIRVOpenMPToolChain : public SPIRVToolChain { void addClangTargetOptions( const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadingKind) const override; const ToolChain &HostTC; diff --git a/clang/lib/Driver/ToolChains/SYCL.cpp b/clang/lib/Driver/ToolChains/SYCL.cpp index 55a697df5081e..a648adbe5201c 100644 --- a/clang/lib/Driver/ToolChains/SYCL.cpp +++ b/clang/lib/Driver/ToolChains/SYCL.cpp @@ -104,8 +104,9 @@ SYCLToolChain::SYCLToolChain(const Driver &D, const llvm::Triple &Triple, void SYCLToolChain::addClangTargetOptions( const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, - Action::OffloadKind DeviceOffloadingKind) const { - HostTC.addClangTargetOptions(DriverArgs, CC1Args, DeviceOffloadingKind); + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadingKind) const { + HostTC.addClangTargetOptions(DriverArgs, CC1Args, BoundArch, + DeviceOffloadingKind); } llvm::opt::DerivedArgList * diff --git a/clang/lib/Driver/ToolChains/SYCL.h b/clang/lib/Driver/ToolChains/SYCL.h index be4ba47cb3d52..ae512723c0cea 100644 --- a/clang/lib/Driver/ToolChains/SYCL.h +++ b/clang/lib/Driver/ToolChains/SYCL.h @@ -32,6 +32,7 @@ class LLVM_LIBRARY_VISIBILITY SYCLToolChain : public ToolChain { void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const override; bool useIntegratedAs() const override { return true; } diff --git a/clang/lib/Driver/ToolChains/VEToolchain.cpp b/clang/lib/Driver/ToolChains/VEToolchain.cpp index 78509bcdae0fe..6093d378f0ec2 100644 --- a/clang/lib/Driver/ToolChains/VEToolchain.cpp +++ b/clang/lib/Driver/ToolChains/VEToolchain.cpp @@ -107,6 +107,7 @@ void VEToolChain::AddClangSystemIncludeArgs(const ArgList &DriverArgs, void VEToolChain::addClangTargetOptions(const ArgList &DriverArgs, ArgStringList &CC1Args, + StringRef BoundArch, Action::OffloadKind) const { CC1Args.push_back("-nostdsysteminc"); bool UseInitArrayDefault = true; diff --git a/clang/lib/Driver/ToolChains/VEToolchain.h b/clang/lib/Driver/ToolChains/VEToolchain.h index 8b9ccaa7fadaf..2a49f8ed37f01 100644 --- a/clang/lib/Driver/ToolChains/VEToolchain.h +++ b/clang/lib/Driver/ToolChains/VEToolchain.h @@ -37,6 +37,7 @@ class LLVM_LIBRARY_VISIBILITY VEToolChain : public Linux { void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const override; void AddClangCXXStdlibIncludeArgs( const llvm::opt::ArgList &DriverArgs, diff --git a/clang/lib/Driver/ToolChains/WebAssembly.cpp b/clang/lib/Driver/ToolChains/WebAssembly.cpp index e532ef0743cc2..dd0df75fd95f8 100644 --- a/clang/lib/Driver/ToolChains/WebAssembly.cpp +++ b/clang/lib/Driver/ToolChains/WebAssembly.cpp @@ -316,6 +316,7 @@ bool WebAssembly::HasNativeLLVMSupport() const { return true; } void WebAssembly::addClangTargetOptions(const ArgList &DriverArgs, ArgStringList &CC1Args, + StringRef BoundArch, Action::OffloadKind) const { if (!DriverArgs.hasFlag(options::OPT_fuse_init_array, options::OPT_fno_use_init_array, true)) diff --git a/clang/lib/Driver/ToolChains/WebAssembly.h b/clang/lib/Driver/ToolChains/WebAssembly.h index 76e0ca39bd748..aa6b9ddfc1ffd 100644 --- a/clang/lib/Driver/ToolChains/WebAssembly.h +++ b/clang/lib/Driver/ToolChains/WebAssembly.h @@ -54,6 +54,7 @@ class LLVM_LIBRARY_VISIBILITY WebAssembly final : public ToolChain { void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const override; RuntimeLibType GetDefaultRuntimeLibType() const override; CXXStdlibType GetCXXStdlibType(const llvm::opt::ArgList &Args) const override; diff --git a/clang/lib/Driver/ToolChains/XCore.cpp b/clang/lib/Driver/ToolChains/XCore.cpp index dd26c11affffb..37452eff55baa 100644 --- a/clang/lib/Driver/ToolChains/XCore.cpp +++ b/clang/lib/Driver/ToolChains/XCore.cpp @@ -127,6 +127,7 @@ void XCoreToolChain::AddClangSystemIncludeArgs(const ArgList &DriverArgs, void XCoreToolChain::addClangTargetOptions(const ArgList &DriverArgs, ArgStringList &CC1Args, + StringRef BoundArch, Action::OffloadKind) const { CC1Args.push_back("-nostdsysteminc"); // Set `-fno-use-cxa-atexit` to default. diff --git a/clang/lib/Driver/ToolChains/XCore.h b/clang/lib/Driver/ToolChains/XCore.h index 95359a6e2542f..1f3272530ddad 100644 --- a/clang/lib/Driver/ToolChains/XCore.h +++ b/clang/lib/Driver/ToolChains/XCore.h @@ -66,9 +66,11 @@ class LLVM_LIBRARY_VISIBILITY XCoreToolChain : public ToolChain { void AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const override; - void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, - llvm::opt::ArgStringList &CC1Args, - Action::OffloadKind DeviceOffloadKind) const override; + void + addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, + llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, + Action::OffloadKind DeviceOffloadKind) const override; void AddClangCXXStdlibIncludeArgs( const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const override; diff --git a/clang/lib/Driver/ToolChains/ZOS.cpp b/clang/lib/Driver/ToolChains/ZOS.cpp index c40f71c170538..fc7b7a6ed186c 100644 --- a/clang/lib/Driver/ToolChains/ZOS.cpp +++ b/clang/lib/Driver/ToolChains/ZOS.cpp @@ -28,7 +28,7 @@ ZOS::ZOS(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) ZOS::~ZOS() {} void ZOS::addClangTargetOptions(const ArgList &DriverArgs, - ArgStringList &CC1Args, + ArgStringList &CC1Args, StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const { // Pass "-faligned-alloc-unavailable" only when the user hasn't manually // enabled or disabled aligned allocations. diff --git a/clang/lib/Driver/ToolChains/ZOS.h b/clang/lib/Driver/ToolChains/ZOS.h index 45204ba0a543c..5d0b2fef79ec8 100644 --- a/clang/lib/Driver/ToolChains/ZOS.h +++ b/clang/lib/Driver/ToolChains/ZOS.h @@ -82,6 +82,7 @@ class LLVM_LIBRARY_VISIBILITY ZOS : public ToolChain { void addClangTargetOptions( const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, + llvm::StringRef BoundArch, Action::OffloadKind DeviceOffloadingKind) const override; const char *getDefaultLinker() const override { return "/bin/ld"; } _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
