[llvm] [llvm][test][NFCI] Use absolute build path instead of a relative path (PR #159126)

Raul Tambre via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 19 02:47:29 PDT 2025


https://github.com/tambry updated https://github.com/llvm/llvm-project/pull/159126

>From 2b5b10719e3fea49142b577818dd7f919e7ffb47 Mon Sep 17 00:00:00 2001
From: Raul Tambre <raul at tambre.ee>
Date: Tue, 16 Sep 2025 19:33:56 +0300
Subject: [PATCH] [llvm][test][CGPluginTest] Keep plugin in shared library
 directory

Scoping to the root build directory instead of using the path directly is awkward and the only such
occurrence in the test suite. It's also prone to breakage for downstreams that change the library
path.

But it's not even necessary: during build we have the appropriate RPATHs set so we can just depend
on the dynamic loader to find it. This extra logic is probably just copy-paste from PluginsTest.cpp.

Additionally:
* Removed TargetParser as a dependency because it doesn't seem to actually be used.
* Moved `add_dependencies()` to `DEPENDS` to better match the rest of LLVM.
---
 llvm/test/Other/codegen-plugin-loading.ll       |  2 +-
 .../CodeGen/CGPluginTest/CMakeLists.txt         |  1 -
 .../CodeGen/CGPluginTest/Plugin/CMakeLists.txt  | 11 ++++-------
 .../CodeGen/CGPluginTest/PluginTest.cpp         | 17 +----------------
 4 files changed, 6 insertions(+), 25 deletions(-)

diff --git a/llvm/test/Other/codegen-plugin-loading.ll b/llvm/test/Other/codegen-plugin-loading.ll
index 652bbcdef36c3..a2a0814718e22 100644
--- a/llvm/test/Other/codegen-plugin-loading.ll
+++ b/llvm/test/Other/codegen-plugin-loading.ll
@@ -1,4 +1,4 @@
-; RUN: llc -load %llvmshlibdir/../unittests/CodeGen/CGPluginTest/CGTestPlugin%pluginext %s -o - | FileCheck %s
+; RUN: llc -load %llvm_obj_root/unittests/CodeGen/CGPluginTest/CGTestPlugin%pluginext %s -o - | FileCheck %s
 ; REQUIRES: native, system-linux, llvm-dylib
 
 ; CHECK: CodeGen Test Pass running on main
diff --git a/llvm/unittests/CodeGen/CGPluginTest/CMakeLists.txt b/llvm/unittests/CodeGen/CGPluginTest/CMakeLists.txt
index ca4f4851c8dc4..b78f36e3fc48f 100644
--- a/llvm/unittests/CodeGen/CGPluginTest/CMakeLists.txt
+++ b/llvm/unittests/CodeGen/CGPluginTest/CMakeLists.txt
@@ -4,7 +4,6 @@ set(LLVM_LINK_COMPONENTS
   Core
   MC
   Target
-  TargetParser
   CodeGen
   )
 
diff --git a/llvm/unittests/CodeGen/CGPluginTest/Plugin/CMakeLists.txt b/llvm/unittests/CodeGen/CGPluginTest/Plugin/CMakeLists.txt
index 04f7738507b0d..6cd2e15d2968c 100644
--- a/llvm/unittests/CodeGen/CGPluginTest/Plugin/CMakeLists.txt
+++ b/llvm/unittests/CodeGen/CGPluginTest/Plugin/CMakeLists.txt
@@ -3,15 +3,12 @@ if (NOT WIN32 AND NOT CYGWIN)
   add_llvm_library(CGTestPlugin MODULE BUILDTREE_ONLY
     CodeGenTestPass.cpp
     Plugin.cpp
-    )
 
-  # Put PLUGIN next to the unit test executable.
-  set_output_directory(CGTestPlugin
-    BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/../
-    LIBRARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/../
+    DEPENDS
+    intrinsics_gen
+    vt_gen
     )
-  set_target_properties(CGTestPlugin PROPERTIES FOLDER "Tests")
 
-  add_dependencies(CGTestPlugin intrinsics_gen vt_gen)
+  set_target_properties(CGTestPlugin PROPERTIES FOLDER "Tests")
   add_dependencies(CGPluginTest CGTestPlugin)
 endif ()
diff --git a/llvm/unittests/CodeGen/CGPluginTest/PluginTest.cpp b/llvm/unittests/CodeGen/CGPluginTest/PluginTest.cpp
index bb8bea6d2e084..3e8be11c3433f 100644
--- a/llvm/unittests/CodeGen/CGPluginTest/PluginTest.cpp
+++ b/llvm/unittests/CodeGen/CGPluginTest/PluginTest.cpp
@@ -25,20 +25,6 @@
 
 using namespace llvm;
 
-namespace {
-void anchor() {}
-
-std::string libPath(const std::string &Name) {
-  const auto &Argvs = testing::internal::GetArgvs();
-  const char *Argv0 = Argvs.size() > 0 ? Argvs[0].c_str() : "CGPluginTest";
-  void *Ptr = (void *)(intptr_t)anchor;
-  std::string Path = sys::fs::getMainExecutable(Argv0, Ptr);
-  SmallString<256> Buf{sys::path::parent_path(Path)};
-  sys::path::append(Buf, (Name + LLVM_PLUGIN_EXT).c_str());
-  return std::string(Buf.str());
-}
-} // namespace
-
 namespace llvm {
 class CGPluginTests : public testing::Test {
 protected:
@@ -56,8 +42,7 @@ TEST_F(CGPluginTests, LoadPlugin) {
   GTEST_SKIP();
 #endif
 
-  auto PluginPath = libPath("CGTestPlugin");
-  ASSERT_NE("", PluginPath);
+  auto PluginPath{std::string{"CGTestPlugin"} + LLVM_PLUGIN_EXT};
 
   std::string Error;
   auto Library = sys::DynamicLibrary::getLibrary(PluginPath.c_str(), &Error);



More information about the llvm-commits mailing list