[llvm] 4e1c996 - [llvm][test][CGPluginTest] Keep plugin in shared library directory

via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 19 04:04:36 PDT 2025


Author: Raul Tambre
Date: 2025-09-19T14:04:32+03:00
New Revision: 4e1c996674cc340f290b0a528e2038e76494d8d4

URL: https://github.com/llvm/llvm-project/commit/4e1c996674cc340f290b0a528e2038e76494d8d4
DIFF: https://github.com/llvm/llvm-project/commit/4e1c996674cc340f290b0a528e2038e76494d8d4.diff

LOG: [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.

Added: 
    

Modified: 
    llvm/test/Other/codegen-plugin-loading.ll
    llvm/unittests/CodeGen/CGPluginTest/CMakeLists.txt
    llvm/unittests/CodeGen/CGPluginTest/Plugin/CMakeLists.txt
    llvm/unittests/CodeGen/CGPluginTest/PluginTest.cpp

Removed: 
    


################################################################################
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