replace hardcoded hip finder with Gentoo paths. It is not necessary to check HIP runtime each time. Author: Benda Xu Index: llvm-project-rocm-4.0.0/clang/lib/Driver/ToolChains/AMDGPU.cpp =================================================================== --- llvm-project-rocm-4.0.0.orig/clang/lib/Driver/ToolChains/AMDGPU.cpp +++ llvm-project-rocm-4.0.0/clang/lib/Driver/ToolChains/AMDGPU.cpp @@ -116,37 +116,8 @@ RocmInstallationDetector::getInstallatio return Candidates; } - // Try to find relative to the compiler binary. - const char *InstallDir = D.getInstalledDir(); + Candidates.emplace_back(D.SysRoot + "/usr", /*StrictChecking=*/true); - // Check both a normal Unix prefix position of the clang binary, as well as - // the Windows-esque layout the ROCm packages use with the host architecture - // subdirectory of bin. - - // Strip off directory (usually bin) - StringRef ParentDir = llvm::sys::path::parent_path(InstallDir); - StringRef ParentName = llvm::sys::path::filename(ParentDir); - - // Some builds use bin/{host arch}, so go up again. - if (ParentName == "bin") { - ParentDir = llvm::sys::path::parent_path(ParentDir); - ParentName = llvm::sys::path::filename(ParentDir); - } - - // Some versions of the rocm llvm package install to /opt/rocm/llvm/bin - if (ParentName == "llvm") - ParentDir = llvm::sys::path::parent_path(ParentDir); - - Candidates.emplace_back(ParentDir.str(), /*StrictChecking=*/true); - - // Device library may be installed in clang resource directory. - Candidates.emplace_back(D.ResourceDir, /*StrictChecking=*/true); - - Candidates.emplace_back(D.SysRoot + "/opt/rocm", /*StrictChecking=*/true); - if (ParentName.startswith("aomp")) { - // Some versions of the aomp package install to /opt/rocm/aomp/bin - Candidates.emplace_back(ParentDir.str()); - } return Candidates; } @@ -273,33 +244,7 @@ void RocmInstallationDetector::detectDev } void RocmInstallationDetector::detectHIPRuntime() { - auto Candidates = getInstallationPathCandidates(); - auto &FS = D.getVFS(); - - for (const auto &Candidate : Candidates) { - InstallPath = Candidate.Path; - if (InstallPath.empty() || !FS.exists(InstallPath)) - continue; - - BinPath = InstallPath; - llvm::sys::path::append(BinPath, "bin"); - IncludePath = InstallPath; - llvm::sys::path::append(IncludePath, "include"); - LibPath = InstallPath; - llvm::sys::path::append(LibPath, "lib"); - - llvm::ErrorOr> VersionFile = - FS.getBufferForFile(BinPath + "/.hipVersion"); - if (!VersionFile && Candidate.StrictChecking) - continue; - - if (HIPVersionArg.empty() && VersionFile) - ParseHIPVersionFile((*VersionFile)->getBuffer()); - - HasHIPRuntime = true; - return; - } - HasHIPRuntime = false; + HasHIPRuntime = true; } void RocmInstallationDetector::print(raw_ostream &OS) const {