From be26fb110e781565e7a77d9fff9be44b761c5975 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=85=E6=97=A5?= <609079623@qq.com> Date: Tue, 17 Jun 2025 18:04:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=87=E9=A2=98:=20Fix=20PAC=20tag=20inconsi?= =?UTF-8?q?stency=20issue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 描述: 编译工程中,对于同一个class,同时存在引用头文件包含类声明和仅前置声明两种方式时,PAC标记行为不一致。前置声明引用的会标记PAC属性,导致引用符号不一致问题。 Issue: 【PAC】When header files reference classes and forward declarations reference classes, the PAC attribute judgment is inconsistent 测试: 1. 场景难以构造 Signed-off-by: zhangshouxu --- clang/lib/AST/ItaniumMangle.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/clang/lib/AST/ItaniumMangle.cpp b/clang/lib/AST/ItaniumMangle.cpp index e3f91d6624b9..b49cf99ddefe 100644 --- a/clang/lib/AST/ItaniumMangle.cpp +++ b/clang/lib/AST/ItaniumMangle.cpp @@ -1500,8 +1500,7 @@ void CXXNameMangler::mangleUnqualifiedName( if (const CXXRecordDecl *A = dyn_cast(GD.getDecl())) { // todo: if class info is signed, then we must mangle also the name of non polymorphic classes. - isPac = langOptions.PointerAuthMangleClass - && (!A->hasDefinition() || A->isPolymorphic()) && !A->isNoPac(); + isPac = langOptions.PointerAuthMangleClass && !A->isNoPac(); } } if (pauth_func) -- Gitee