Author: Matt Arsenault Date: 2026-06-10T18:08:37+02:00 New Revision: 22cdece9e73a303253dc1b655dc4269dc3e8b79c
URL: https://github.com/llvm/llvm-project/commit/22cdece9e73a303253dc1b655dc4269dc3e8b79c DIFF: https://github.com/llvm/llvm-project/commit/22cdece9e73a303253dc1b655dc4269dc3e8b79c.diff LOG: clang: Add BoundArch argument to addClangTargetOptions (#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]> Added: Modified: clang/include/clang/Driver/ToolChain.h clang/lib/Driver/ToolChain.cpp clang/lib/Driver/ToolChains/AIX.cpp clang/lib/Driver/ToolChains/AIX.h clang/lib/Driver/ToolChains/AMDGPU.cpp clang/lib/Driver/ToolChains/AMDGPU.h clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp clang/lib/Driver/ToolChains/AMDGPUOpenMP.h clang/lib/Driver/ToolChains/AVR.cpp clang/lib/Driver/ToolChains/AVR.h clang/lib/Driver/ToolChains/BareMetal.cpp clang/lib/Driver/ToolChains/BareMetal.h clang/lib/Driver/ToolChains/CSKYToolChain.cpp clang/lib/Driver/ToolChains/CSKYToolChain.h clang/lib/Driver/ToolChains/Clang.cpp clang/lib/Driver/ToolChains/Cuda.cpp clang/lib/Driver/ToolChains/Cuda.h clang/lib/Driver/ToolChains/Darwin.cpp clang/lib/Driver/ToolChains/Darwin.h clang/lib/Driver/ToolChains/Flang.cpp clang/lib/Driver/ToolChains/Fuchsia.cpp clang/lib/Driver/ToolChains/Fuchsia.h clang/lib/Driver/ToolChains/Gnu.cpp clang/lib/Driver/ToolChains/Gnu.h clang/lib/Driver/ToolChains/HIPAMD.cpp clang/lib/Driver/ToolChains/HIPAMD.h clang/lib/Driver/ToolChains/HIPSPV.cpp clang/lib/Driver/ToolChains/HIPSPV.h clang/lib/Driver/ToolChains/Hexagon.cpp clang/lib/Driver/ToolChains/Hexagon.h clang/lib/Driver/ToolChains/Linux.cpp clang/lib/Driver/ToolChains/Linux.h clang/lib/Driver/ToolChains/MSP430.cpp clang/lib/Driver/ToolChains/MSP430.h clang/lib/Driver/ToolChains/MSVC.cpp clang/lib/Driver/ToolChains/MSVC.h clang/lib/Driver/ToolChains/MinGW.cpp clang/lib/Driver/ToolChains/MinGW.h clang/lib/Driver/ToolChains/NetBSD.cpp clang/lib/Driver/ToolChains/NetBSD.h clang/lib/Driver/ToolChains/PS4CPU.cpp clang/lib/Driver/ToolChains/PS4CPU.h clang/lib/Driver/ToolChains/SPIRVOpenMP.cpp clang/lib/Driver/ToolChains/SPIRVOpenMP.h clang/lib/Driver/ToolChains/SYCL.cpp clang/lib/Driver/ToolChains/SYCL.h clang/lib/Driver/ToolChains/VEToolchain.cpp clang/lib/Driver/ToolChains/VEToolchain.h clang/lib/Driver/ToolChains/WebAssembly.cpp clang/lib/Driver/ToolChains/WebAssembly.h clang/lib/Driver/ToolChains/XCore.cpp clang/lib/Driver/ToolChains/XCore.h clang/lib/Driver/ToolChains/ZOS.cpp clang/lib/Driver/ToolChains/ZOS.h Removed: ################################################################################ diff --git a/clang/include/clang/Driver/ToolChain.h b/clang/include/clang/Driver/ToolChain.h index 554e0e1ac8b50..453af0783b445 100644 --- a/clang/include/clang/Driver/ToolChain.h +++ b/clang/include/clang/Driver/ToolChain.h @@ -754,9 +754,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 ccfc022f79427..67aa642c464e2 100644 --- a/clang/lib/Driver/ToolChain.cpp +++ b/clang/lib/Driver/ToolChain.cpp @@ -1491,7 +1491,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 78559250c3c9b..a6a890db305b9 100644 --- a/clang/lib/Driver/ToolChains/AIX.cpp +++ b/clang/lib/Driver/ToolChains/AIX.cpp @@ -556,7 +556,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 a82f2fd7dffa5..47df326fca9be 100644 --- a/clang/lib/Driver/ToolChains/AMDGPU.cpp +++ b/clang/lib/Driver/ToolChains/AMDGPU.cpp @@ -839,9 +839,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. @@ -954,8 +956,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 93023c4751b2a..2c3465a162dfc 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; @@ -142,6 +144,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 diff erent languages diff --git a/clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp b/clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp index 40c85bae0b9db..1d3568321438f 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 49e801df44f6c..b1bcb08899c46 100644 --- a/clang/lib/Driver/ToolChains/AMDGPUOpenMP.h +++ b/clang/lib/Driver/ToolChains/AMDGPUOpenMP.h @@ -40,6 +40,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 16bfa84d86dcf..c2b5288627b3a 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 1bd34f7777226..0a8e5d7f5b74a 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 782dc99af129c..14e9c6e990cae 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 672a2e5c61a32..1f2329b9e2fed 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -5463,7 +5463,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 @@ -6231,7 +6232,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 2e47d3e33ed50..b490ee5615d0c 100644 --- a/clang/lib/Driver/ToolChains/Cuda.cpp +++ b/clang/lib/Driver/ToolChains/Cuda.cpp @@ -796,7 +796,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 { @@ -883,8 +884,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 386aaf6e6830a..390ebad9442bc 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 f18c60ca6959c..59744d1cb3e8c 100644 --- a/clang/lib/Driver/ToolChains/Darwin.cpp +++ b/clang/lib/Driver/ToolChains/Darwin.cpp @@ -1349,9 +1349,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 @@ -3439,9 +3440,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 @@ -3488,9 +3491,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 d8a6d2e1980b4..a737d2ac799c4 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, @@ -684,6 +687,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 224ece3239efd..c713b7904b22c 100644 --- a/clang/lib/Driver/ToolChains/Flang.cpp +++ b/clang/lib/Driver/ToolChains/Flang.cpp @@ -533,7 +533,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 e037e29eb7796..d63d0dbd96416 100644 --- a/clang/lib/Driver/ToolChains/Fuchsia.cpp +++ b/clang/lib/Driver/ToolChains/Fuchsia.cpp @@ -366,7 +366,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 b81d90001d0a9..daeb936b394f4 100644 --- a/clang/lib/Driver/ToolChains/Fuchsia.h +++ b/clang/lib/Driver/ToolChains/Fuchsia.h @@ -101,6 +101,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 9aa0ec38a1191..c489a1bddcb26 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 fadedb8467c39..26ce048c4c69d 100644 --- a/clang/lib/Driver/ToolChains/HIPAMD.cpp +++ b/clang/lib/Driver/ToolChains/HIPAMD.cpp @@ -234,8 +234,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 7299fe35e2b93..e0b72eda0dd6c 100644 --- a/clang/lib/Driver/ToolChains/HIPAMD.h +++ b/clang/lib/Driver/ToolChains/HIPAMD.h @@ -68,6 +68,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 db15df654e9d4..a4177a8a6665d 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 21b6468c21df2..f7f50e1f36688 100644 --- a/clang/lib/Driver/ToolChains/HIPSPV.h +++ b/clang/lib/Driver/ToolChains/HIPSPV.h @@ -59,6 +59,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 0e7055797a1f0..46f2499b158a2 100644 --- a/clang/lib/Driver/ToolChains/Hexagon.cpp +++ b/clang/lib/Driver/ToolChains/Hexagon.cpp @@ -779,6 +779,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 d3c94c8addffa..c0f44d74a9aac 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 a8e4b6da3e67e..63f77b4b4d87c 100644 --- a/clang/lib/Driver/ToolChains/Linux.h +++ b/clang/lib/Driver/ToolChains/Linux.h @@ -63,6 +63,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 9439e30da765c..3c3bfe33b9f07 100644 --- a/clang/lib/Driver/ToolChains/MSVC.cpp +++ b/clang/lib/Driver/ToolChains/MSVC.cpp @@ -1128,7 +1128,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 dcf4c0b488171..9f09ff3bbb48d 100644 --- a/clang/lib/Driver/ToolChains/MSVC.h +++ b/clang/lib/Driver/ToolChains/MSVC.h @@ -127,6 +127,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 e3f8cb8292fc8..11dca2fa4231d 100644 --- a/clang/lib/Driver/ToolChains/MinGW.cpp +++ b/clang/lib/Driver/ToolChains/MinGW.cpp @@ -746,7 +746,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 ddf9dc500960b..eaec447a16ac6 100644 --- a/clang/lib/Driver/ToolChains/MinGW.h +++ b/clang/lib/Driver/ToolChains/MinGW.h @@ -86,6 +86,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 feadd4bf7dcc9..ade8a07cb0b1a 100644 --- a/clang/lib/Driver/ToolChains/NetBSD.cpp +++ b/clang/lib/Driver/ToolChains/NetBSD.cpp @@ -562,7 +562,7 @@ NetBSD::getSupportedSanitizers(StringRef BoundArch, } 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 530d3e0f5b1dd..d6072ab37dc11 100644 --- a/clang/lib/Driver/ToolChains/NetBSD.h +++ b/clang/lib/Driver/ToolChains/NetBSD.h @@ -80,9 +80,11 @@ class LLVM_LIBRARY_VISIBILITY NetBSD : public Generic_ELF { getSupportedSanitizers(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; protected: Tool *buildAssembler() const override; diff --git a/clang/lib/Driver/ToolChains/PS4CPU.cpp b/clang/lib/Driver/ToolChains/PS4CPU.cpp index 8f5d3ec8a6f91..20ba7aa9de04a 100644 --- a/clang/lib/Driver/ToolChains/PS4CPU.cpp +++ b/clang/lib/Driver/ToolChains/PS4CPU.cpp @@ -580,7 +580,7 @@ SanitizerMask toolchains::PS5CPU::getSupportedSanitizers( } 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 baa14ee06c1dc..002e4d313be8b 100644 --- a/clang/lib/Driver/ToolChains/PS4CPU.h +++ b/clang/lib/Driver/ToolChains/PS4CPU.h @@ -112,6 +112,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; void addClangWarningOptions(llvm::opt::ArgStringList &CC1Args) const override; 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 9d13d3314dcc5..7ee7eaf58a740 100644 --- a/clang/lib/Driver/ToolChains/SYCL.cpp +++ b/clang/lib/Driver/ToolChains/SYCL.cpp @@ -128,8 +128,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 b90f1ddf596fc..5bc43b37d06bf 100644 --- a/clang/lib/Driver/ToolChains/WebAssembly.cpp +++ b/clang/lib/Driver/ToolChains/WebAssembly.cpp @@ -326,6 +326,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 4727e22937e4e..756e2a03ff915 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
