[llvm] 1fa8394 - Revert "[llvm][CFI] Do not canonicalize COFF functions in a comdat (#139962)"

Leonard Chan via llvm-commits llvm-commits at lists.llvm.org
Fri May 16 15:18:16 PDT 2025


Author: Leonard Chan
Date: 2025-05-16T15:17:51-07:00
New Revision: 1fa8394e78cc0eb73a766bcae1ad76af7e3b84da

URL: https://github.com/llvm/llvm-project/commit/1fa8394e78cc0eb73a766bcae1ad76af7e3b84da
DIFF: https://github.com/llvm/llvm-project/commit/1fa8394e78cc0eb73a766bcae1ad76af7e3b84da.diff

LOG: Revert "[llvm][CFI] Do not canonicalize COFF functions in a comdat (#139962)"

This reverts commit 33684ac9be4892579f63a8e2b67080419426cf98.

Reverting since this is breaking a bunch of builders. See the llvm-ci
messages on https://github.com/llvm/llvm-project/pull/139962.

Added: 
    

Modified: 
    llvm/lib/Transforms/IPO/LowerTypeTests.cpp

Removed: 
    llvm/test/Transforms/LowerTypeTests/cfi-coff-comdat-rename.ll


################################################################################
diff  --git a/llvm/lib/Transforms/IPO/LowerTypeTests.cpp b/llvm/lib/Transforms/IPO/LowerTypeTests.cpp
index 91e84a95b30b3..ebabece067db2 100644
--- a/llvm/lib/Transforms/IPO/LowerTypeTests.cpp
+++ b/llvm/lib/Transforms/IPO/LowerTypeTests.cpp
@@ -1711,22 +1711,8 @@ void LowerTypeTestsModule::buildBitSetsFromFunctionsNative(
           F->getValueType(), 0, F->getLinkage(), "", CombinedGlobalElemPtr, &M);
       FAlias->setVisibility(F->getVisibility());
       FAlias->takeName(F);
-      if (FAlias->hasName()) {
+      if (FAlias->hasName())
         F->setName(FAlias->getName() + ".cfi");
-        // For COFF we should also rename the comdat if this function also
-        // happens to be the key function. Even if the comdat name changes, this
-        // should still be fine since comdat and symbol resolution happens
-        // before LTO, so all symbols which would prevail have been selected.
-        if (F->hasComdat() && ObjectFormat == Triple::COFF &&
-            F->getComdat()->getName() == FAlias->getName()) {
-          Comdat *OldComdat = F->getComdat();
-          Comdat *NewComdat = M.getOrInsertComdat(F->getName());
-          for (GlobalObject &GO : M.global_objects()) {
-            if (GO.getComdat() == OldComdat)
-              GO.setComdat(NewComdat);
-          }
-        }
-      }
       replaceCfiUses(F, FAlias, IsJumpTableCanonical);
       if (!F->hasLocalLinkage())
         F->setVisibility(GlobalVariable::HiddenVisibility);

diff  --git a/llvm/test/Transforms/LowerTypeTests/cfi-coff-comdat-rename.ll b/llvm/test/Transforms/LowerTypeTests/cfi-coff-comdat-rename.ll
deleted file mode 100644
index aa56a3abf00fc..0000000000000
--- a/llvm/test/Transforms/LowerTypeTests/cfi-coff-comdat-rename.ll
+++ /dev/null
@@ -1,35 +0,0 @@
-; RUN: opt -S -passes=lowertypetests %s | FileCheck %s
-
-;; This is a check to assert we don't crash with:
-;;
-;;   LLVM ERROR: Associative COMDAT symbol '...' does not exist.
-;;
-;; So this just needs to exit normally.
-; RUN: opt -S -passes=lowertypetests %s | llc -asm-verbose=false
-
-target datalayout = "e-p:64:64"
-target triple = "x86_64-pc-windows-msvc"
-
- at a = global [2 x ptr] [ptr @f1, ptr @f2]
-
-; CHECK: $f1.cfi = comdat any
-$f1 = comdat any
-
-; CHECK: @f1.cfi() comdat !type !0
-define void @f1() comdat !type !0 {
-  ret void
-}
-
-; CHECK: @f2.cfi() comdat($f1.cfi) !type !0
-define void @f2() comdat($f1) !type !0 {
-  ret void
-}
-
-declare i1 @llvm.type.test(ptr %ptr, metadata %bitset) nounwind readnone
-
-define i1 @foo(ptr %p) {
-  %x = call i1 @llvm.type.test(ptr %p, metadata !"typeid1")
-  ret i1 %x
-}
-
-!0 = !{i32 0, !"typeid1"}


        


More information about the llvm-commits mailing list