https://github.com/david-salinas updated 
https://github.com/llvm/llvm-project/pull/169551

>From 6bfbc089ad15e794249703bef3449e01c15e6ff8 Mon Sep 17 00:00:00 2001
From: david-salinas <[email protected]>
Date: Tue, 25 Nov 2025 19:02:20 +0000
Subject: [PATCH 1/7] hipcc/ld.lld unable to link separable compilation when
 dynamic library is fully specified

---
 clang/lib/Driver/ToolChains/HIPUtility.cpp | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/clang/lib/Driver/ToolChains/HIPUtility.cpp 
b/clang/lib/Driver/ToolChains/HIPUtility.cpp
index 1af2ae6470f1e..82d84dac9a907 100644
--- a/clang/lib/Driver/ToolChains/HIPUtility.cpp
+++ b/clang/lib/Driver/ToolChains/HIPUtility.cpp
@@ -241,15 +241,16 @@ class HIPUndefinedFatBinSymbols {
 
       bool isUndefined =
           FlagOrErr.get() & llvm::object::SymbolRef::SF_Undefined;
+      bool isHidden = FlagOrErr.get() & llvm::object::SymbolRef::SF_Hidden;
       bool isFatBinSymbol = Name.starts_with(FatBinPrefix);
       bool isGPUBinHandleSymbol = Name.starts_with(GPUBinHandlePrefix);
 
       // Handling for defined symbols
       if (!isUndefined) {
-        if (isFatBinSymbol) {
+        if ((isFatBinSymbol) && (!isHidden)) {
           DefinedFatBinSymbols.insert(Name.str());
           FatBinSymbols.erase(Name.str());
-        } else if (isGPUBinHandleSymbol) {
+        } else if ((isGPUBinHandleSymbol) && (!isHidden)) {
           DefinedGPUBinHandleSymbols.insert(Name.str());
           GPUBinHandleSymbols.erase(Name.str());
         }

>From a49c2854834c1ac1add67b6d8981073040347558 Mon Sep 17 00:00:00 2001
From: david-salinas <[email protected]>
Date: Wed, 26 Nov 2025 19:19:31 +0000
Subject: [PATCH 2/7] remove redundant parenthesis

---
 clang/lib/Driver/ToolChains/HIPUtility.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/clang/lib/Driver/ToolChains/HIPUtility.cpp 
b/clang/lib/Driver/ToolChains/HIPUtility.cpp
index 82d84dac9a907..8e95d37cb63c1 100644
--- a/clang/lib/Driver/ToolChains/HIPUtility.cpp
+++ b/clang/lib/Driver/ToolChains/HIPUtility.cpp
@@ -247,10 +247,10 @@ class HIPUndefinedFatBinSymbols {
 
       // Handling for defined symbols
       if (!isUndefined) {
-        if ((isFatBinSymbol) && (!isHidden)) {
+        if (isFatBinSymbol && !isHidden) {
           DefinedFatBinSymbols.insert(Name.str());
           FatBinSymbols.erase(Name.str());
-        } else if ((isGPUBinHandleSymbol) && (!isHidden)) {
+        } else if (isGPUBinHandleSymbol && !isHidden) {
           DefinedGPUBinHandleSymbols.insert(Name.str());
           GPUBinHandleSymbols.erase(Name.str());
         }

>From 3ffbf84469d2da76767d3d537a042e94d0d68933 Mon Sep 17 00:00:00 2001
From: David Salinas <[email protected]>
Date: Wed, 26 Nov 2025 19:33:08 -0500
Subject: [PATCH 3/7] Apply suggestion from @omor1

Co-authored-by: Omri Mor <[email protected]>
---
 clang/lib/Driver/ToolChains/HIPUtility.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/clang/lib/Driver/ToolChains/HIPUtility.cpp 
b/clang/lib/Driver/ToolChains/HIPUtility.cpp
index 8e95d37cb63c1..2c4661b460916 100644
--- a/clang/lib/Driver/ToolChains/HIPUtility.cpp
+++ b/clang/lib/Driver/ToolChains/HIPUtility.cpp
@@ -246,7 +246,7 @@ class HIPUndefinedFatBinSymbols {
       bool isGPUBinHandleSymbol = Name.starts_with(GPUBinHandlePrefix);
 
       // Handling for defined symbols
-      if (!isUndefined) {
+      if (!isUndefined && !isHidden) {
         if (isFatBinSymbol && !isHidden) {
           DefinedFatBinSymbols.insert(Name.str());
           FatBinSymbols.erase(Name.str());

>From 3fe8f3225d5ad90fccc4fcbf82186863246c178a Mon Sep 17 00:00:00 2001
From: David Salinas <[email protected]>
Date: Wed, 26 Nov 2025 19:35:36 -0500
Subject: [PATCH 4/7] Update HIPUtility.cpp

move (!isHidden) to upper level if-statement.
---
 clang/lib/Driver/ToolChains/HIPUtility.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/clang/lib/Driver/ToolChains/HIPUtility.cpp 
b/clang/lib/Driver/ToolChains/HIPUtility.cpp
index 2c4661b460916..54aed880a0393 100644
--- a/clang/lib/Driver/ToolChains/HIPUtility.cpp
+++ b/clang/lib/Driver/ToolChains/HIPUtility.cpp
@@ -247,10 +247,10 @@ class HIPUndefinedFatBinSymbols {
 
       // Handling for defined symbols
       if (!isUndefined && !isHidden) {
-        if (isFatBinSymbol && !isHidden) {
+        if (isFatBinSymbol) {
           DefinedFatBinSymbols.insert(Name.str());
           FatBinSymbols.erase(Name.str());
-        } else if (isGPUBinHandleSymbol && !isHidden) {
+        } else if (isGPUBinHandleSymbol) {
           DefinedGPUBinHandleSymbols.insert(Name.str());
           GPUBinHandleSymbols.erase(Name.str());
         }

>From a2b0516c9d1c766bc81468b2f2d1e9ac83f462ac Mon Sep 17 00:00:00 2001
From: david-salinas <[email protected]>
Date: Mon, 1 Dec 2025 20:15:16 +0000
Subject: [PATCH 5/7] Revert "Update HIPUtility.cpp"

This reverts commit 3fe8f3225d5ad90fccc4fcbf82186863246c178a.
---
 clang/lib/Driver/ToolChains/HIPUtility.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/clang/lib/Driver/ToolChains/HIPUtility.cpp 
b/clang/lib/Driver/ToolChains/HIPUtility.cpp
index 54aed880a0393..2c4661b460916 100644
--- a/clang/lib/Driver/ToolChains/HIPUtility.cpp
+++ b/clang/lib/Driver/ToolChains/HIPUtility.cpp
@@ -247,10 +247,10 @@ class HIPUndefinedFatBinSymbols {
 
       // Handling for defined symbols
       if (!isUndefined && !isHidden) {
-        if (isFatBinSymbol) {
+        if (isFatBinSymbol && !isHidden) {
           DefinedFatBinSymbols.insert(Name.str());
           FatBinSymbols.erase(Name.str());
-        } else if (isGPUBinHandleSymbol) {
+        } else if (isGPUBinHandleSymbol && !isHidden) {
           DefinedGPUBinHandleSymbols.insert(Name.str());
           GPUBinHandleSymbols.erase(Name.str());
         }

>From b8dc7e2dcb33ddeacb72c6d1243f2df2eb2d91ad Mon Sep 17 00:00:00 2001
From: david-salinas <[email protected]>
Date: Mon, 1 Dec 2025 20:27:14 +0000
Subject: [PATCH 6/7] Revert "Apply suggestion from @omor1"

This reverts commit 3ffbf84469d2da76767d3d537a042e94d0d68933.
---
 clang/lib/Driver/ToolChains/HIPUtility.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/clang/lib/Driver/ToolChains/HIPUtility.cpp 
b/clang/lib/Driver/ToolChains/HIPUtility.cpp
index 2c4661b460916..8e95d37cb63c1 100644
--- a/clang/lib/Driver/ToolChains/HIPUtility.cpp
+++ b/clang/lib/Driver/ToolChains/HIPUtility.cpp
@@ -246,7 +246,7 @@ class HIPUndefinedFatBinSymbols {
       bool isGPUBinHandleSymbol = Name.starts_with(GPUBinHandlePrefix);
 
       // Handling for defined symbols
-      if (!isUndefined && !isHidden) {
+      if (!isUndefined) {
         if (isFatBinSymbol && !isHidden) {
           DefinedFatBinSymbols.insert(Name.str());
           FatBinSymbols.erase(Name.str());

>From 536247c426246802cdbc4b65d4e44e976493b6e9 Mon Sep 17 00:00:00 2001
From: david-salinas <[email protected]>
Date: Tue, 2 Dec 2025 16:04:03 +0000
Subject: [PATCH 7/7] rework defined/undefined symbols in hiputility

---
 clang/lib/Driver/ToolChains/HIPUtility.cpp | 37 ++++++++++++----------
 1 file changed, 21 insertions(+), 16 deletions(-)

diff --git a/clang/lib/Driver/ToolChains/HIPUtility.cpp 
b/clang/lib/Driver/ToolChains/HIPUtility.cpp
index 8e95d37cb63c1..1fcb36cc3a390 100644
--- a/clang/lib/Driver/ToolChains/HIPUtility.cpp
+++ b/clang/lib/Driver/ToolChains/HIPUtility.cpp
@@ -245,25 +245,30 @@ class HIPUndefinedFatBinSymbols {
       bool isFatBinSymbol = Name.starts_with(FatBinPrefix);
       bool isGPUBinHandleSymbol = Name.starts_with(GPUBinHandlePrefix);
 
-      // Handling for defined symbols
-      if (!isUndefined) {
-        if (isFatBinSymbol && !isHidden) {
-          DefinedFatBinSymbols.insert(Name.str());
-          FatBinSymbols.erase(Name.str());
-        } else if (isGPUBinHandleSymbol && !isHidden) {
-          DefinedGPUBinHandleSymbols.insert(Name.str());
-          GPUBinHandleSymbols.erase(Name.str());
-        }
+      // Add undefined symbols if they are not in the defined sets
+      if (isUndefined) {
+        if (isFatBinSymbol &&
+            DefinedFatBinSymbols.find(Name) == DefinedFatBinSymbols.end())
+          FatBinSymbols.insert(Name.str());
+        else if (isGPUBinHandleSymbol &&
+                 DefinedGPUBinHandleSymbols.find(Name) ==
+                     DefinedGPUBinHandleSymbols.end())
+          GPUBinHandleSymbols.insert(Name.str());
         continue;
       }
 
-      // Add undefined symbols if they are not in the defined sets
-      if (isFatBinSymbol &&
-          DefinedFatBinSymbols.find(Name) == DefinedFatBinSymbols.end())
-        FatBinSymbols.insert(Name.str());
-      else if (isGPUBinHandleSymbol && DefinedGPUBinHandleSymbols.find(Name) ==
-                                           DefinedGPUBinHandleSymbols.end())
-        GPUBinHandleSymbols.insert(Name.str());
+      // Ignore hidden defined symbols
+      if (isHidden)
+        continue;
+
+      // Handling for non-hidden defined symbols
+      if (isFatBinSymbol) {
+        DefinedFatBinSymbols.insert(Name.str());
+        FatBinSymbols.erase(Name.str());
+      } else if (isGPUBinHandleSymbol) {
+        DefinedGPUBinHandleSymbols.insert(Name.str());
+        GPUBinHandleSymbols.erase(Name.str());
+      }
     }
   }
 

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to