[clang] 5ff4355 - Revert "Fix amdgpu-arch for dll name on Windows (#101350)"

Yaxun Liu via cfe-commits cfe-commits at lists.llvm.org
Fri Mar 7 12:57:04 PST 2025


Author: Yaxun (Sam) Liu
Date: 2025-03-07T15:54:50-05:00
New Revision: 5ff43550fa2aa3b93aa7310b8e435ba9e1338486

URL: https://github.com/llvm/llvm-project/commit/5ff43550fa2aa3b93aa7310b8e435ba9e1338486
DIFF: https://github.com/llvm/llvm-project/commit/5ff43550fa2aa3b93aa7310b8e435ba9e1338486.diff

LOG: Revert "Fix amdgpu-arch for dll name on Windows (#101350)"

This reverts commit 6fa1bfad65edefe3f4c17740f05297d34e833b47.

Revert it due to breaking buildbot:

Z:\b\llvm-clang-x86_64-sie-win\llvm-project\clang\tools\amdgpu-arch\AMDGPUArchByHIP.cpp(104):
 error C2039: 'parse': is not a member of 'llvm::VersionTuple'

https://lab.llvm.org/buildbot/#/builders/46/builds/13184

Added: 
    

Modified: 
    clang/tools/amdgpu-arch/AMDGPUArch.cpp
    clang/tools/amdgpu-arch/AMDGPUArchByHIP.cpp

Removed: 
    


################################################################################
diff  --git a/clang/tools/amdgpu-arch/AMDGPUArch.cpp b/clang/tools/amdgpu-arch/AMDGPUArch.cpp
index 86f3e31f47bbc..6c10cbc5c46a8 100644
--- a/clang/tools/amdgpu-arch/AMDGPUArch.cpp
+++ b/clang/tools/amdgpu-arch/AMDGPUArch.cpp
@@ -21,9 +21,6 @@ static cl::opt<bool> Help("h", cl::desc("Alias for -help"), cl::Hidden);
 // Mark all our options with this category.
 static cl::OptionCategory AMDGPUArchCategory("amdgpu-arch options");
 
-cl::opt<bool> Verbose("verbose", cl::desc("Enable verbose output"),
-                      cl::init(false), cl::cat(AMDGPUArchCategory));
-
 static void PrintVersion(raw_ostream &OS) {
   OS << clang::getClangToolFullVersion("amdgpu-arch") << '\n';
 }

diff  --git a/clang/tools/amdgpu-arch/AMDGPUArchByHIP.cpp b/clang/tools/amdgpu-arch/AMDGPUArchByHIP.cpp
index be90b93a8f650..7338872dbf32f 100644
--- a/clang/tools/amdgpu-arch/AMDGPUArchByHIP.cpp
+++ b/clang/tools/amdgpu-arch/AMDGPUArchByHIP.cpp
@@ -11,24 +11,9 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include "llvm/ADT/STLExtras.h"
-#include "llvm/Support/CommandLine.h"
-#include "llvm/Support/ConvertUTF.h"
 #include "llvm/Support/DynamicLibrary.h"
 #include "llvm/Support/Error.h"
-#include "llvm/Support/FileSystem.h"
-#include "llvm/Support/Path.h"
-#include "llvm/Support/Process.h"
-#include "llvm/Support/Program.h"
-#include "llvm/Support/VersionTuple.h"
 #include "llvm/Support/raw_ostream.h"
-#include <algorithm>
-#include <string>
-#include <vector>
-
-#ifdef _WIN32
-#include <windows.h>
-#endif
 
 using namespace llvm;
 
@@ -46,124 +31,16 @@ typedef hipError_t (*hipGetDeviceCount_t)(int *);
 typedef hipError_t (*hipDeviceGet_t)(int *, int);
 typedef hipError_t (*hipGetDeviceProperties_t)(hipDeviceProp_t *, int);
 
-extern cl::opt<bool> Verbose;
-
-#ifdef _WIN32
-static std::vector<std::string> getSearchPaths() {
-  std::vector<std::string> Paths;
-
-  // Get the directory of the current executable
-  if (auto MainExe = sys::fs::getMainExecutable(nullptr, nullptr);
-      !MainExe.empty())
-    Paths.push_back(sys::path::parent_path(MainExe).str());
-
-  // Get the system directory
-  wchar_t SystemDirectory[MAX_PATH];
-  if (GetSystemDirectoryW(SystemDirectory, MAX_PATH) > 0) {
-    std::string Utf8SystemDir;
-    if (convertUTF16ToUTF8String(
-            ArrayRef<UTF16>(reinterpret_cast<const UTF16 *>(SystemDirectory),
-                            wcslen(SystemDirectory)),
-            Utf8SystemDir))
-      Paths.push_back(Utf8SystemDir);
-  }
-
-  // Get the Windows directory
-  wchar_t WindowsDirectory[MAX_PATH];
-  if (GetWindowsDirectoryW(WindowsDirectory, MAX_PATH) > 0) {
-    std::string Utf8WindowsDir;
-    if (convertUTF16ToUTF8String(
-            ArrayRef<UTF16>(reinterpret_cast<const UTF16 *>(WindowsDirectory),
-                            wcslen(WindowsDirectory)),
-            Utf8WindowsDir))
-      Paths.push_back(Utf8WindowsDir);
-  }
-
-  // Get the current working directory
-  SmallVector<char, 256> CWD;
-  if (sys::fs::current_path(CWD))
-    Paths.push_back(std::string(CWD.begin(), CWD.end()));
-
-  // Get the PATH environment variable
-  if (std::optional<std::string> PathEnv = sys::Process::GetEnv("PATH")) {
-    SmallVector<StringRef, 16> PathList;
-    StringRef(*PathEnv).split(PathList, sys::EnvPathSeparator);
-    for (auto &Path : PathList)
-      Paths.push_back(Path.str());
-  }
-
-  return Paths;
-}
-
-// Custom comparison function for dll name
-static bool compareVersions(StringRef A, StringRef B) {
-  auto ParseVersion = [](StringRef S) -> VersionTuple {
-    unsigned Pos = S.find_last_of('_');
-    StringRef VerStr = (Pos == StringRef::npos) ? S : S.substr(Pos + 1);
-    VersionTuple Vt;
-    (void)VersionTuple::parse(VerStr, Vt);
-    return Vt;
-  };
-
-  VersionTuple VtA = ParseVersion(A);
-  VersionTuple VtB = ParseVersion(B);
-  return VtA > VtB;
-}
-#endif
-
-// On Windows, prefer amdhip64_n.dll where n is ROCm major version and greater
-// value of n takes precedence. If amdhip64_n.dll is not found, fall back to
-// amdhip64.dll. The reason is that a normal driver installation only has
-// amdhip64_n.dll but we do not know what n is since this program may be used
-// with a future version of HIP runtime.
-//
-// On Linux, always use default libamdhip64.so.
-static std::pair<std::string, bool> findNewestHIPDLL() {
+int printGPUsByHIP() {
 #ifdef _WIN32
-  StringRef HipDLLPrefix = "amdhip64_";
-  StringRef HipDLLSuffix = ".dll";
-
-  std::vector<std::string> SearchPaths = getSearchPaths();
-  std::vector<std::string> DLLNames;
-
-  for (const auto &Dir : SearchPaths) {
-    std::error_code EC;
-    for (sys::fs::directory_iterator DirIt(Dir, EC), DirEnd;
-         DirIt != DirEnd && !EC; DirIt.increment(EC)) {
-      StringRef Filename = sys::path::filename(DirIt->path());
-      if (Filename.starts_with(HipDLLPrefix) &&
-          Filename.ends_with(HipDLLSuffix))
-        DLLNames.push_back(sys::path::convert_to_slash(DirIt->path()));
-    }
-    if (!DLLNames.empty())
-      break;
-  }
-
-  if (DLLNames.empty())
-    return {"amdhip64.dll", true};
-
-  llvm::sort(DLLNames, compareVersions);
-  return {DLLNames[0], false};
+  constexpr const char *DynamicHIPPath = "amdhip64.dll";
 #else
-  // On Linux, fallback to default shared object
-  return {"libamdhip64.so", true};
+  constexpr const char *DynamicHIPPath = "libamdhip64.so";
 #endif
-}
-
-int printGPUsByHIP() {
-  auto [DynamicHIPPath, IsFallback] = findNewestHIPDLL();
-
-  if (Verbose) {
-    if (IsFallback)
-      outs() << "Using default HIP runtime: " << DynamicHIPPath << '\n';
-    else
-      outs() << "Found HIP runtime: " << DynamicHIPPath << '\n';
-  }
 
   std::string ErrMsg;
   auto DynlibHandle = std::make_unique<llvm::sys::DynamicLibrary>(
-      llvm::sys::DynamicLibrary::getPermanentLibrary(DynamicHIPPath.c_str(),
-                                                     &ErrMsg));
+      llvm::sys::DynamicLibrary::getPermanentLibrary(DynamicHIPPath, &ErrMsg));
   if (!DynlibHandle->isValid()) {
     llvm::errs() << "Failed to load " << DynamicHIPPath << ": " << ErrMsg
                  << '\n';


        


More information about the cfe-commits mailing list