Skip to content

Commit 4ad4c8e

Browse files
authored
[clang] Use LazyDetector for all toolchains. (llvm#79073)
Use the LazyDetector also for the remaining toolchains to avoid unnecessarily checking for the Cuda and Rocm installations. This fixes rdar://121397534.
1 parent 4beea6b commit 4ad4c8e

File tree

6 files changed

+22
-19
lines changed

6 files changed

+22
-19
lines changed

clang/lib/Driver/ToolChains/Darwin.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -985,12 +985,12 @@ bool Darwin::hasBlocksRuntime() const {
985985

986986
void Darwin::AddCudaIncludeArgs(const ArgList &DriverArgs,
987987
ArgStringList &CC1Args) const {
988-
CudaInstallation.AddCudaIncludeArgs(DriverArgs, CC1Args);
988+
CudaInstallation->AddCudaIncludeArgs(DriverArgs, CC1Args);
989989
}
990990

991991
void Darwin::AddHIPIncludeArgs(const ArgList &DriverArgs,
992992
ArgStringList &CC1Args) const {
993-
RocmInstallation.AddHIPIncludeArgs(DriverArgs, CC1Args);
993+
RocmInstallation->AddHIPIncludeArgs(DriverArgs, CC1Args);
994994
}
995995

996996
// This is just a MachO name translation routine and there's no
@@ -3436,6 +3436,6 @@ SanitizerMask Darwin::getSupportedSanitizers() const {
34363436
}
34373437

34383438
void Darwin::printVerboseInfo(raw_ostream &OS) const {
3439-
CudaInstallation.print(OS);
3440-
RocmInstallation.print(OS);
3439+
CudaInstallation->print(OS);
3440+
RocmInstallation->print(OS);
34413441
}

clang/lib/Driver/ToolChains/Darwin.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_DARWIN_H
1111

1212
#include "Cuda.h"
13+
#include "LazyDetector.h"
1314
#include "ROCm.h"
1415
#include "clang/Basic/DarwinSDKInfo.h"
1516
#include "clang/Basic/LangOptions.h"
@@ -321,8 +322,8 @@ class LLVM_LIBRARY_VISIBILITY Darwin : public MachO {
321322
/// The target variant triple that was specified (if any).
322323
mutable std::optional<llvm::Triple> TargetVariantTriple;
323324

324-
CudaInstallationDetector CudaInstallation;
325-
RocmInstallationDetector RocmInstallation;
325+
LazyDetector<CudaInstallationDetector> CudaInstallation;
326+
LazyDetector<RocmInstallationDetector> RocmInstallation;
326327

327328
private:
328329
void AddDeploymentTarget(llvm::opt::DerivedArgList &Args) const;

clang/lib/Driver/ToolChains/MSVC.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -495,24 +495,24 @@ bool MSVCToolChain::isPICDefaultForced() const {
495495

496496
void MSVCToolChain::AddCudaIncludeArgs(const ArgList &DriverArgs,
497497
ArgStringList &CC1Args) const {
498-
CudaInstallation.AddCudaIncludeArgs(DriverArgs, CC1Args);
498+
CudaInstallation->AddCudaIncludeArgs(DriverArgs, CC1Args);
499499
}
500500

501501
void MSVCToolChain::AddHIPIncludeArgs(const ArgList &DriverArgs,
502502
ArgStringList &CC1Args) const {
503-
RocmInstallation.AddHIPIncludeArgs(DriverArgs, CC1Args);
503+
RocmInstallation->AddHIPIncludeArgs(DriverArgs, CC1Args);
504504
}
505505

506506
void MSVCToolChain::AddHIPRuntimeLibArgs(const ArgList &Args,
507507
ArgStringList &CmdArgs) const {
508508
CmdArgs.append({Args.MakeArgString(StringRef("-libpath:") +
509-
RocmInstallation.getLibPath()),
509+
RocmInstallation->getLibPath()),
510510
"amdhip64.lib"});
511511
}
512512

513513
void MSVCToolChain::printVerboseInfo(raw_ostream &OS) const {
514-
CudaInstallation.print(OS);
515-
RocmInstallation.print(OS);
514+
CudaInstallation->print(OS);
515+
RocmInstallation->print(OS);
516516
}
517517

518518
std::string

clang/lib/Driver/ToolChains/MSVC.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
#include "AMDGPU.h"
1313
#include "Cuda.h"
14+
#include "LazyDetector.h"
1415
#include "clang/Driver/Compilation.h"
1516
#include "clang/Driver/Tool.h"
1617
#include "clang/Driver/ToolChain.h"
@@ -136,8 +137,8 @@ class LLVM_LIBRARY_VISIBILITY MSVCToolChain : public ToolChain {
136137
std::optional<llvm::StringRef> WinSdkDir, WinSdkVersion, WinSysRoot;
137138
std::string VCToolChainPath;
138139
llvm::ToolsetLayout VSLayout = llvm::ToolsetLayout::OlderVS;
139-
CudaInstallationDetector CudaInstallation;
140-
RocmInstallationDetector RocmInstallation;
140+
LazyDetector<CudaInstallationDetector> CudaInstallation;
141+
LazyDetector<RocmInstallationDetector> RocmInstallation;
141142
};
142143

143144
} // end namespace toolchains

clang/lib/Driver/ToolChains/MinGW.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -614,17 +614,17 @@ SanitizerMask toolchains::MinGW::getSupportedSanitizers() const {
614614

615615
void toolchains::MinGW::AddCudaIncludeArgs(const ArgList &DriverArgs,
616616
ArgStringList &CC1Args) const {
617-
CudaInstallation.AddCudaIncludeArgs(DriverArgs, CC1Args);
617+
CudaInstallation->AddCudaIncludeArgs(DriverArgs, CC1Args);
618618
}
619619

620620
void toolchains::MinGW::AddHIPIncludeArgs(const ArgList &DriverArgs,
621621
ArgStringList &CC1Args) const {
622-
RocmInstallation.AddHIPIncludeArgs(DriverArgs, CC1Args);
622+
RocmInstallation->AddHIPIncludeArgs(DriverArgs, CC1Args);
623623
}
624624

625625
void toolchains::MinGW::printVerboseInfo(raw_ostream &OS) const {
626-
CudaInstallation.print(OS);
627-
RocmInstallation.print(OS);
626+
CudaInstallation->print(OS);
627+
RocmInstallation->print(OS);
628628
}
629629

630630
// Include directories for various hosts:

clang/lib/Driver/ToolChains/MinGW.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
#include "Cuda.h"
1313
#include "Gnu.h"
14+
#include "LazyDetector.h"
1415
#include "ROCm.h"
1516
#include "clang/Driver/Tool.h"
1617
#include "clang/Driver/ToolChain.h"
@@ -102,8 +103,8 @@ class LLVM_LIBRARY_VISIBILITY MinGW : public ToolChain {
102103
Tool *buildAssembler() const override;
103104

104105
private:
105-
CudaInstallationDetector CudaInstallation;
106-
RocmInstallationDetector RocmInstallation;
106+
LazyDetector<CudaInstallationDetector> CudaInstallation;
107+
LazyDetector<RocmInstallationDetector> RocmInstallation;
107108

108109
std::string Base;
109110
std::string GccLibDir;

0 commit comments

Comments
 (0)