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
