[clang] b5ee4f7 - Revert "Lazyly initialize uncommon toolchain detector"
Jonas Hahnfeld via cfe-commits
cfe-commits at lists.llvm.org
Mon Feb 6 06:41:43 PST 2023
Author: Jonas Hahnfeld
Date: 2023-02-06T15:39:33+01:00
New Revision: b5ee4f755fcff56243f6ff0cea9e7a722259304a
URL: https://github.com/llvm/llvm-project/commit/b5ee4f755fcff56243f6ff0cea9e7a722259304a
DIFF: https://github.com/llvm/llvm-project/commit/b5ee4f755fcff56243f6ff0cea9e7a722259304a.diff
LOG: Revert "Lazyly initialize uncommon toolchain detector"
clang/test/Driver/rocm-detect.hip is failing for a number of
configurations, for example:
clang-x86_64-debian-fast
https://lab.llvm.org/buildbot/#/builders/109/builds/57270
clang-debian-cpp20
https://lab.llvm.org/buildbot/#/builders/249/builds/310
clang-with-lto-ubuntu
https://lab.llvm.org/buildbot/#/builders/124/builds/6693
This reverts commit 6fa2abf90886f18472c87bc9bffbcdf4f73c465e.
Added:
Modified:
clang/lib/Driver/ToolChains/AMDGPU.cpp
clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp
clang/lib/Driver/ToolChains/FreeBSD.cpp
clang/lib/Driver/ToolChains/Gnu.cpp
clang/lib/Driver/ToolChains/Gnu.h
clang/lib/Driver/ToolChains/HIPAMD.cpp
clang/lib/Driver/ToolChains/Linux.cpp
Removed:
clang/lib/Driver/ToolChains/LazyDetector.h
################################################################################
diff --git a/clang/lib/Driver/ToolChains/AMDGPU.cpp b/clang/lib/Driver/ToolChains/AMDGPU.cpp
index a25bea951388c..52021901b9bf8 100644
--- a/clang/lib/Driver/ToolChains/AMDGPU.cpp
+++ b/clang/lib/Driver/ToolChains/AMDGPU.cpp
@@ -701,7 +701,7 @@ bool AMDGPUToolChain::isWave64(const llvm::opt::ArgList &DriverArgs,
ROCMToolChain::ROCMToolChain(const Driver &D, const llvm::Triple &Triple,
const ArgList &Args)
: AMDGPUToolChain(D, Triple, Args) {
- RocmInstallation->detectDeviceLibrary();
+ RocmInstallation.detectDeviceLibrary();
}
void AMDGPUToolChain::addClangTargetOptions(
@@ -790,11 +790,11 @@ void ROCMToolChain::addClangTargetOptions(
const StringRef GpuArch = getGPUArch(DriverArgs);
auto Kind = llvm::AMDGPU::parseArchAMDGCN(GpuArch);
const StringRef CanonArch = llvm::AMDGPU::getArchNameAMDGCN(Kind);
- StringRef LibDeviceFile = RocmInstallation->getLibDeviceFile(CanonArch);
+ StringRef LibDeviceFile = RocmInstallation.getLibDeviceFile(CanonArch);
auto ABIVer = DeviceLibABIVersion::fromCodeObjectVersion(
getAMDGPUCodeObjectVersion(getDriver(), DriverArgs));
- if (!RocmInstallation->checkCommonBitcodeLibs(CanonArch, LibDeviceFile,
- ABIVer))
+ if (!RocmInstallation.checkCommonBitcodeLibs(CanonArch, LibDeviceFile,
+ ABIVer))
return;
bool Wave64 = isWave64(DriverArgs, Kind);
@@ -813,10 +813,10 @@ void ROCMToolChain::addClangTargetOptions(
// Add the OpenCL specific bitcode library.
llvm::SmallVector<std::string, 12> BCLibs;
- BCLibs.push_back(RocmInstallation->getOpenCLPath().str());
+ BCLibs.push_back(RocmInstallation.getOpenCLPath().str());
// Add the generic set of libraries.
- BCLibs.append(RocmInstallation->getCommonBitcodeLibs(
+ BCLibs.append(RocmInstallation.getCommonBitcodeLibs(
DriverArgs, LibDeviceFile, Wave64, DAZ, FiniteOnly, UnsafeMathOpt,
FastRelaxedMath, CorrectSqrt, ABIVer, false));
@@ -875,11 +875,11 @@ ROCMToolChain::getCommonDeviceLibNames(const llvm::opt::ArgList &DriverArgs,
auto Kind = llvm::AMDGPU::parseArchAMDGCN(GPUArch);
const StringRef CanonArch = llvm::AMDGPU::getArchNameAMDGCN(Kind);
- StringRef LibDeviceFile = RocmInstallation->getLibDeviceFile(CanonArch);
+ StringRef LibDeviceFile = RocmInstallation.getLibDeviceFile(CanonArch);
auto ABIVer = DeviceLibABIVersion::fromCodeObjectVersion(
getAMDGPUCodeObjectVersion(getDriver(), DriverArgs));
- if (!RocmInstallation->checkCommonBitcodeLibs(CanonArch, LibDeviceFile,
- ABIVer))
+ if (!RocmInstallation.checkCommonBitcodeLibs(CanonArch, LibDeviceFile,
+ ABIVer))
return {};
// If --hip-device-lib is not set, add the default bitcode libraries.
@@ -900,7 +900,7 @@ ROCMToolChain::getCommonDeviceLibNames(const llvm::opt::ArgList &DriverArgs,
options::OPT_fno_hip_fp32_correctly_rounded_divide_sqrt, true);
bool Wave64 = isWave64(DriverArgs, Kind);
- return RocmInstallation->getCommonBitcodeLibs(
+ return RocmInstallation.getCommonBitcodeLibs(
DriverArgs, LibDeviceFile, Wave64, DAZ, FiniteOnly, UnsafeMathOpt,
FastRelaxedMath, CorrectSqrt, ABIVer, isOpenMP);
}
diff --git a/clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp b/clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp
index b012b7cb72937..68d351af22603 100644
--- a/clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp
+++ b/clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp
@@ -160,7 +160,7 @@ AMDGPUOpenMPToolChain::getDeviceLibs(const llvm::opt::ArgList &Args) const {
if (Args.hasArg(options::OPT_nogpulib))
return {};
- if (!RocmInstallation->hasDeviceLibrary()) {
+ if (!RocmInstallation.hasDeviceLibrary()) {
getDriver().Diag(diag::err_drv_no_rocm_device_lib) << 0;
return {};
}
diff --git a/clang/lib/Driver/ToolChains/FreeBSD.cpp b/clang/lib/Driver/ToolChains/FreeBSD.cpp
index 6653cd2017fbe..64935227b07e1 100644
--- a/clang/lib/Driver/ToolChains/FreeBSD.cpp
+++ b/clang/lib/Driver/ToolChains/FreeBSD.cpp
@@ -477,12 +477,12 @@ void FreeBSD::AddCXXStdlibLibArgs(const ArgList &Args,
void FreeBSD::AddCudaIncludeArgs(const ArgList &DriverArgs,
ArgStringList &CC1Args) const {
- CudaInstallation->AddCudaIncludeArgs(DriverArgs, CC1Args);
+ CudaInstallation.AddCudaIncludeArgs(DriverArgs, CC1Args);
}
void FreeBSD::AddHIPIncludeArgs(const ArgList &DriverArgs,
ArgStringList &CC1Args) const {
- RocmInstallation->AddHIPIncludeArgs(DriverArgs, CC1Args);
+ RocmInstallation.AddHIPIncludeArgs(DriverArgs, CC1Args);
}
Tool *FreeBSD::buildAssembler() const {
diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp
index 714db8dd4d5d3..4f23403166543 100644
--- a/clang/lib/Driver/ToolChains/Gnu.cpp
+++ b/clang/lib/Driver/ToolChains/Gnu.cpp
@@ -2849,8 +2849,8 @@ Tool *Generic_GCC::buildLinker() const { return new tools::gcc::Linker(*this); }
void Generic_GCC::printVerboseInfo(raw_ostream &OS) const {
// Print the information about how we detected the GCC installation.
GCCInstallation.print(OS);
- CudaInstallation->print(OS);
- RocmInstallation->print(OS);
+ CudaInstallation.print(OS);
+ RocmInstallation.print(OS);
}
ToolChain::UnwindTableLevel
diff --git a/clang/lib/Driver/ToolChains/Gnu.h b/clang/lib/Driver/ToolChains/Gnu.h
index c7975c9c60394..b8610724103bd 100644
--- a/clang/lib/Driver/ToolChains/Gnu.h
+++ b/clang/lib/Driver/ToolChains/Gnu.h
@@ -10,7 +10,6 @@
#define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_GNU_H
#include "Cuda.h"
-#include "LazyDetector.h"
#include "ROCm.h"
#include "clang/Driver/Tool.h"
#include "clang/Driver/ToolChain.h"
@@ -287,8 +286,8 @@ class LLVM_LIBRARY_VISIBILITY Generic_GCC : public ToolChain {
protected:
GCCInstallationDetector GCCInstallation;
- LazyDetector<CudaInstallationDetector> CudaInstallation;
- LazyDetector<RocmInstallationDetector> RocmInstallation;
+ CudaInstallationDetector CudaInstallation;
+ RocmInstallationDetector RocmInstallation;
public:
Generic_GCC(const Driver &D, const llvm::Triple &Triple,
diff --git a/clang/lib/Driver/ToolChains/HIPAMD.cpp b/clang/lib/Driver/ToolChains/HIPAMD.cpp
index 2e10e4ce5b9ca..8c504d8439d67 100644
--- a/clang/lib/Driver/ToolChains/HIPAMD.cpp
+++ b/clang/lib/Driver/ToolChains/HIPAMD.cpp
@@ -314,7 +314,7 @@ void HIPAMDToolChain::AddIAMCUIncludeArgs(const ArgList &Args,
void HIPAMDToolChain::AddHIPIncludeArgs(const ArgList &DriverArgs,
ArgStringList &CC1Args) const {
- RocmInstallation->AddHIPIncludeArgs(DriverArgs, CC1Args);
+ RocmInstallation.AddHIPIncludeArgs(DriverArgs, CC1Args);
}
SanitizerMask HIPAMDToolChain::getSupportedSanitizers() const {
@@ -343,7 +343,7 @@ HIPAMDToolChain::getDeviceLibs(const llvm::opt::ArgList &DriverArgs) const {
ArgStringList LibraryPaths;
// Find in --hip-device-lib-path and HIP_LIBRARY_PATH.
- for (StringRef Path : RocmInstallation->getRocmDeviceLibPathArg())
+ for (StringRef Path : RocmInstallation.getRocmDeviceLibPathArg())
LibraryPaths.push_back(DriverArgs.MakeArgString(Path));
addDirectoryList(DriverArgs, LibraryPaths, "", "HIP_DEVICE_LIB_PATH");
@@ -365,7 +365,7 @@ HIPAMDToolChain::getDeviceLibs(const llvm::opt::ArgList &DriverArgs) const {
getDriver().Diag(diag::err_drv_no_such_file) << BCName;
});
} else {
- if (!RocmInstallation->hasDeviceLibrary()) {
+ if (!RocmInstallation.hasDeviceLibrary()) {
getDriver().Diag(diag::err_drv_no_rocm_device_lib) << 0;
return {};
}
@@ -376,7 +376,7 @@ HIPAMDToolChain::getDeviceLibs(const llvm::opt::ArgList &DriverArgs) const {
if (DriverArgs.hasFlag(options::OPT_fgpu_sanitize,
options::OPT_fno_gpu_sanitize, true) &&
getSanitizerArgs(DriverArgs).needsAsanRt()) {
- auto AsanRTL = RocmInstallation->getAsanRTLPath();
+ auto AsanRTL = RocmInstallation.getAsanRTLPath();
if (AsanRTL.empty()) {
unsigned DiagID = getDriver().getDiags().getCustomDiagID(
DiagnosticsEngine::Error,
@@ -390,7 +390,7 @@ HIPAMDToolChain::getDeviceLibs(const llvm::opt::ArgList &DriverArgs) const {
}
// Add the HIP specific bitcode library.
- BCLibs.push_back(RocmInstallation->getHIPPath());
+ BCLibs.push_back(RocmInstallation.getHIPPath());
// Add common device libraries like ocml etc.
for (StringRef N : getCommonDeviceLibNames(DriverArgs, GpuArch.str()))
diff --git a/clang/lib/Driver/ToolChains/LazyDetector.h b/clang/lib/Driver/ToolChains/LazyDetector.h
deleted file mode 100644
index dfa8b5a4a82e4..0000000000000
--- a/clang/lib/Driver/ToolChains/LazyDetector.h
+++ /dev/null
@@ -1,45 +0,0 @@
-//===--- LazyDetector.h - Lazy ToolChain Detection --------------*- C++ -*-===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_LAZYDETECTOR_H
-#define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_LAZYDETECTOR_H
-
-#include "clang/Driver/Tool.h"
-#include "clang/Driver/ToolChain.h"
-#include <optional>
-
-namespace clang {
-
-/// Simple wrapper for toolchain detector with costly initialization. This
-/// delays the creation of the actual detector until its first usage.
-
-template <class T> class LazyDetector {
- const driver::Driver &D;
- const llvm::Triple &Triple;
- const llvm::opt::ArgList &Args;
-
- std::optional<T> Detector;
-
-public:
- LazyDetector(const driver::Driver &D, const llvm::Triple &Triple,
- const llvm::opt::ArgList &Args)
- : D(D), Triple(Triple), Args(Args) {}
- T *operator->() {
- if (!Detector)
- Detector.emplace(D, Triple, Args);
- return &*Detector;
- }
- const T *operator->() const {
- return const_cast<T const *>(
- const_cast<LazyDetector &>(*this).operator->());
- }
-};
-
-} // end namespace clang
-
-#endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_LAZYDETECTOR_H
diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp
index e8890af0ab9ac..c6fb290ffdb4d 100644
--- a/clang/lib/Driver/ToolChains/Linux.cpp
+++ b/clang/lib/Driver/ToolChains/Linux.cpp
@@ -681,23 +681,23 @@ void Linux::addLibStdCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
void Linux::AddCudaIncludeArgs(const ArgList &DriverArgs,
ArgStringList &CC1Args) const {
- CudaInstallation->AddCudaIncludeArgs(DriverArgs, CC1Args);
+ CudaInstallation.AddCudaIncludeArgs(DriverArgs, CC1Args);
}
void Linux::AddHIPIncludeArgs(const ArgList &DriverArgs,
ArgStringList &CC1Args) const {
- RocmInstallation->AddHIPIncludeArgs(DriverArgs, CC1Args);
+ RocmInstallation.AddHIPIncludeArgs(DriverArgs, CC1Args);
}
void Linux::AddHIPRuntimeLibArgs(const ArgList &Args,
ArgStringList &CmdArgs) const {
CmdArgs.push_back(
- Args.MakeArgString(StringRef("-L") + RocmInstallation->getLibPath()));
+ Args.MakeArgString(StringRef("-L") + RocmInstallation.getLibPath()));
if (Args.hasFlag(options::OPT_offload_add_rpath,
options::OPT_no_offload_add_rpath, false))
CmdArgs.append(
- {"-rpath", Args.MakeArgString(RocmInstallation->getLibPath())});
+ {"-rpath", Args.MakeArgString(RocmInstallation.getLibPath())});
CmdArgs.push_back("-lamdhip64");
}
More information about the cfe-commits
mailing list