[clang] Enable unique-object-duplication warning for windows (PR #143537)
Devon Loehr via cfe-commits
cfe-commits at lists.llvm.org
Wed Jun 11 11:53:12 PDT 2025
================
@@ -13518,8 +13518,29 @@ bool Sema::GloballyUniqueObjectMightBeAccidentallyDuplicated(
// If the object isn't hidden, the dynamic linker will prevent duplication.
clang::LinkageInfo Lnk = Target->getLinkageAndVisibility();
- if (Lnk.getVisibility() != HiddenVisibility)
+
+ // The target is "hidden" (from the dynamic linker) if:
+ // 1. On posix, it has hidden visibility, or
+ // 2. On windows, it has no import/export annotation
+ if (Context.getTargetInfo().shouldDLLImportComdatSymbols()) {
+ if (Target->hasAttr<DLLExportAttr>() || Target->hasAttr<DLLImportAttr>())
+ return false;
+
+ // If the variable isn't directly annotated, check to see if it's a member
+ // of an annotated class.
+ const VarDecl *VD = dyn_cast_if_present<VarDecl>(Target);
+
+ if (VD && VD->isStaticDataMember()) {
+ const CXXRecordDecl *Ctx =
+ dyn_cast_if_present<CXXRecordDecl>(VD->getDeclContext());
----------------
DKLoehr wrote:
Done
https://github.com/llvm/llvm-project/pull/143537
More information about the cfe-commits
mailing list