Author: David Salinas
Date: 2025-12-15T12:48:27-05:00
New Revision: 31ba65c13318bbfe1ca182d1348968922e1c3c5a

URL: 
https://github.com/llvm/llvm-project/commit/31ba65c13318bbfe1ca182d1348968922e1c3c5a
DIFF: 
https://github.com/llvm/llvm-project/commit/31ba65c13318bbfe1ca182d1348968922e1c3c5a.diff

LOG: hipcc/ld.lld unable to link separable compilation when dynamic librar… 
(#169551)

…y is fully specified

---------

Co-authored-by: Omri Mor <[email protected]>

Added: 
    

Modified: 
    clang/lib/Driver/ToolChains/HIPUtility.cpp

Removed: 
    


################################################################################
diff  --git a/clang/lib/Driver/ToolChains/HIPUtility.cpp 
b/clang/lib/Driver/ToolChains/HIPUtility.cpp
index 1af2ae6470f1e..1fcb36cc3a390 100644
--- a/clang/lib/Driver/ToolChains/HIPUtility.cpp
+++ b/clang/lib/Driver/ToolChains/HIPUtility.cpp
@@ -241,28 +241,34 @@ 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) {
-          DefinedFatBinSymbols.insert(Name.str());
-          FatBinSymbols.erase(Name.str());
-        } else if (isGPUBinHandleSymbol) {
-          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