mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-25 23:46:05 +00:00
[clang] Use LazyDetector for all toolchains. (#79073)
Use the LazyDetector also for the remaining toolchains to avoid unnecessarily checking for the Cuda and Rocm installations. This fixes rdar://121397534.
This commit is contained in:
parent
4beea6b195
commit
4ad4c8e90e
@ -985,12 +985,12 @@ bool Darwin::hasBlocksRuntime() const {
|
||||
|
||||
void Darwin::AddCudaIncludeArgs(const ArgList &DriverArgs,
|
||||
ArgStringList &CC1Args) const {
|
||||
CudaInstallation.AddCudaIncludeArgs(DriverArgs, CC1Args);
|
||||
CudaInstallation->AddCudaIncludeArgs(DriverArgs, CC1Args);
|
||||
}
|
||||
|
||||
void Darwin::AddHIPIncludeArgs(const ArgList &DriverArgs,
|
||||
ArgStringList &CC1Args) const {
|
||||
RocmInstallation.AddHIPIncludeArgs(DriverArgs, CC1Args);
|
||||
RocmInstallation->AddHIPIncludeArgs(DriverArgs, CC1Args);
|
||||
}
|
||||
|
||||
// This is just a MachO name translation routine and there's no
|
||||
@ -3436,6 +3436,6 @@ SanitizerMask Darwin::getSupportedSanitizers() const {
|
||||
}
|
||||
|
||||
void Darwin::printVerboseInfo(raw_ostream &OS) const {
|
||||
CudaInstallation.print(OS);
|
||||
RocmInstallation.print(OS);
|
||||
CudaInstallation->print(OS);
|
||||
RocmInstallation->print(OS);
|
||||
}
|
||||
|
@ -10,6 +10,7 @@
|
||||
#define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_DARWIN_H
|
||||
|
||||
#include "Cuda.h"
|
||||
#include "LazyDetector.h"
|
||||
#include "ROCm.h"
|
||||
#include "clang/Basic/DarwinSDKInfo.h"
|
||||
#include "clang/Basic/LangOptions.h"
|
||||
@ -321,8 +322,8 @@ public:
|
||||
/// The target variant triple that was specified (if any).
|
||||
mutable std::optional<llvm::Triple> TargetVariantTriple;
|
||||
|
||||
CudaInstallationDetector CudaInstallation;
|
||||
RocmInstallationDetector RocmInstallation;
|
||||
LazyDetector<CudaInstallationDetector> CudaInstallation;
|
||||
LazyDetector<RocmInstallationDetector> RocmInstallation;
|
||||
|
||||
private:
|
||||
void AddDeploymentTarget(llvm::opt::DerivedArgList &Args) const;
|
||||
|
@ -495,24 +495,24 @@ bool MSVCToolChain::isPICDefaultForced() const {
|
||||
|
||||
void MSVCToolChain::AddCudaIncludeArgs(const ArgList &DriverArgs,
|
||||
ArgStringList &CC1Args) const {
|
||||
CudaInstallation.AddCudaIncludeArgs(DriverArgs, CC1Args);
|
||||
CudaInstallation->AddCudaIncludeArgs(DriverArgs, CC1Args);
|
||||
}
|
||||
|
||||
void MSVCToolChain::AddHIPIncludeArgs(const ArgList &DriverArgs,
|
||||
ArgStringList &CC1Args) const {
|
||||
RocmInstallation.AddHIPIncludeArgs(DriverArgs, CC1Args);
|
||||
RocmInstallation->AddHIPIncludeArgs(DriverArgs, CC1Args);
|
||||
}
|
||||
|
||||
void MSVCToolChain::AddHIPRuntimeLibArgs(const ArgList &Args,
|
||||
ArgStringList &CmdArgs) const {
|
||||
CmdArgs.append({Args.MakeArgString(StringRef("-libpath:") +
|
||||
RocmInstallation.getLibPath()),
|
||||
RocmInstallation->getLibPath()),
|
||||
"amdhip64.lib"});
|
||||
}
|
||||
|
||||
void MSVCToolChain::printVerboseInfo(raw_ostream &OS) const {
|
||||
CudaInstallation.print(OS);
|
||||
RocmInstallation.print(OS);
|
||||
CudaInstallation->print(OS);
|
||||
RocmInstallation->print(OS);
|
||||
}
|
||||
|
||||
std::string
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
#include "AMDGPU.h"
|
||||
#include "Cuda.h"
|
||||
#include "LazyDetector.h"
|
||||
#include "clang/Driver/Compilation.h"
|
||||
#include "clang/Driver/Tool.h"
|
||||
#include "clang/Driver/ToolChain.h"
|
||||
@ -136,8 +137,8 @@ private:
|
||||
std::optional<llvm::StringRef> WinSdkDir, WinSdkVersion, WinSysRoot;
|
||||
std::string VCToolChainPath;
|
||||
llvm::ToolsetLayout VSLayout = llvm::ToolsetLayout::OlderVS;
|
||||
CudaInstallationDetector CudaInstallation;
|
||||
RocmInstallationDetector RocmInstallation;
|
||||
LazyDetector<CudaInstallationDetector> CudaInstallation;
|
||||
LazyDetector<RocmInstallationDetector> RocmInstallation;
|
||||
};
|
||||
|
||||
} // end namespace toolchains
|
||||
|
@ -614,17 +614,17 @@ SanitizerMask toolchains::MinGW::getSupportedSanitizers() const {
|
||||
|
||||
void toolchains::MinGW::AddCudaIncludeArgs(const ArgList &DriverArgs,
|
||||
ArgStringList &CC1Args) const {
|
||||
CudaInstallation.AddCudaIncludeArgs(DriverArgs, CC1Args);
|
||||
CudaInstallation->AddCudaIncludeArgs(DriverArgs, CC1Args);
|
||||
}
|
||||
|
||||
void toolchains::MinGW::AddHIPIncludeArgs(const ArgList &DriverArgs,
|
||||
ArgStringList &CC1Args) const {
|
||||
RocmInstallation.AddHIPIncludeArgs(DriverArgs, CC1Args);
|
||||
RocmInstallation->AddHIPIncludeArgs(DriverArgs, CC1Args);
|
||||
}
|
||||
|
||||
void toolchains::MinGW::printVerboseInfo(raw_ostream &OS) const {
|
||||
CudaInstallation.print(OS);
|
||||
RocmInstallation.print(OS);
|
||||
CudaInstallation->print(OS);
|
||||
RocmInstallation->print(OS);
|
||||
}
|
||||
|
||||
// Include directories for various hosts:
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
#include "Cuda.h"
|
||||
#include "Gnu.h"
|
||||
#include "LazyDetector.h"
|
||||
#include "ROCm.h"
|
||||
#include "clang/Driver/Tool.h"
|
||||
#include "clang/Driver/ToolChain.h"
|
||||
@ -102,8 +103,8 @@ protected:
|
||||
Tool *buildAssembler() const override;
|
||||
|
||||
private:
|
||||
CudaInstallationDetector CudaInstallation;
|
||||
RocmInstallationDetector RocmInstallation;
|
||||
LazyDetector<CudaInstallationDetector> CudaInstallation;
|
||||
LazyDetector<RocmInstallationDetector> RocmInstallation;
|
||||
|
||||
std::string Base;
|
||||
std::string GccLibDir;
|
||||
|
Loading…
x
Reference in New Issue
Block a user