Skip to content

Commit 66bf4a1

Browse files
committed
[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. (cherry picked from commit 4ad4c8e)
1 parent 84394d5 commit 66bf4a1

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
@@ -1094,12 +1094,12 @@ bool Darwin::hasBlocksRuntime() const {
10941094

10951095
void Darwin::AddCudaIncludeArgs(const ArgList &DriverArgs,
10961096
ArgStringList &CC1Args) const {
1097-
CudaInstallation.AddCudaIncludeArgs(DriverArgs, CC1Args);
1097+
CudaInstallation->AddCudaIncludeArgs(DriverArgs, CC1Args);
10981098
}
10991099

11001100
void Darwin::AddHIPIncludeArgs(const ArgList &DriverArgs,
11011101
ArgStringList &CC1Args) const {
1102-
RocmInstallation.AddHIPIncludeArgs(DriverArgs, CC1Args);
1102+
RocmInstallation->AddHIPIncludeArgs(DriverArgs, CC1Args);
11031103
}
11041104

11051105
// This is just a MachO name translation routine and there's no
@@ -3545,6 +3545,6 @@ SanitizerMask Darwin::getSupportedSanitizers() const {
35453545
}
35463546

35473547
void Darwin::printVerboseInfo(raw_ostream &OS) const {
3548-
CudaInstallation.print(OS);
3549-
RocmInstallation.print(OS);
3548+
CudaInstallation->print(OS);
3549+
RocmInstallation->print(OS);
35503550
}

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"
@@ -320,8 +321,8 @@ class LLVM_LIBRARY_VISIBILITY Darwin : public MachO {
320321
/// The target variant triple that was specified (if any).
321322
mutable std::optional<llvm::Triple> TargetVariantTriple;
322323

323-
CudaInstallationDetector CudaInstallation;
324-
RocmInstallationDetector RocmInstallation;
324+
LazyDetector<CudaInstallationDetector> CudaInstallation;
325+
LazyDetector<RocmInstallationDetector> RocmInstallation;
325326

326327
private:
327328
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
@@ -590,17 +590,17 @@ SanitizerMask toolchains::MinGW::getSupportedSanitizers() const {
590590

591591
void toolchains::MinGW::AddCudaIncludeArgs(const ArgList &DriverArgs,
592592
ArgStringList &CC1Args) const {
593-
CudaInstallation.AddCudaIncludeArgs(DriverArgs, CC1Args);
593+
CudaInstallation->AddCudaIncludeArgs(DriverArgs, CC1Args);
594594
}
595595

596596
void toolchains::MinGW::AddHIPIncludeArgs(const ArgList &DriverArgs,
597597
ArgStringList &CC1Args) const {
598-
RocmInstallation.AddHIPIncludeArgs(DriverArgs, CC1Args);
598+
RocmInstallation->AddHIPIncludeArgs(DriverArgs, CC1Args);
599599
}
600600

601601
void toolchains::MinGW::printVerboseInfo(raw_ostream &OS) const {
602-
CudaInstallation.print(OS);
603-
RocmInstallation.print(OS);
602+
CudaInstallation->print(OS);
603+
RocmInstallation->print(OS);
604604
}
605605

606606
// 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)