[llvm] [WIP][CFI][LTO] Avoid duplicate symbols on aliased weak function (PR #150072)

Vitaly Buka via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 22 10:35:27 PDT 2025


https://github.com/vitalybuka created https://github.com/llvm/llvm-project/pull/150072

Problem is that LowerTypeTests expects that only one
definition will be left by LTO for a symbol.

However, thanks to strong alias, weak non-prevaling
definition can be preserved.

So strong and weak function definition will be renamed to strong .cfi,
making them duplicate.

Fixes #150070.


>From 800b92b0620753905695509d21a8b50762e3c097 Mon Sep 17 00:00:00 2001
From: Vitaly Buka <vitalybuka at google.com>
Date: Tue, 22 Jul 2025 10:35:12 -0700
Subject: [PATCH] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20initia?=
 =?UTF-8?q?l=20version?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Created using spr 1.3.6
---
 llvm/lib/Transforms/IPO/LowerTypeTests.cpp | 1 -
 1 file changed, 1 deletion(-)

diff --git a/llvm/lib/Transforms/IPO/LowerTypeTests.cpp b/llvm/lib/Transforms/IPO/LowerTypeTests.cpp
index 486205c8a3848..71f827dd87086 100644
--- a/llvm/lib/Transforms/IPO/LowerTypeTests.cpp
+++ b/llvm/lib/Transforms/IPO/LowerTypeTests.cpp
@@ -1135,7 +1135,6 @@ void LowerTypeTestsModule::importFunction(
   } else {
     F->setName(Name + ".cfi");
     maybeReplaceComdat(F, Name);
-    F->setLinkage(GlobalValue::ExternalLinkage);
     FDecl = Function::Create(F->getFunctionType(), GlobalValue::ExternalLinkage,
                              F->getAddressSpace(), Name, &M);
     FDecl->setVisibility(Visibility);



More information about the llvm-commits mailing list