[clang] 45218e0 - [NFC] Tweak docs for unique-object-duplication warning (#142158)

via cfe-commits cfe-commits at lists.llvm.org
Fri May 30 08:54:47 PDT 2025


Author: Devon Loehr
Date: 2025-05-30T11:54:44-04:00
New Revision: 45218e01d69ecb6428afcff19c9dde2cc792cdd6

URL: https://github.com/llvm/llvm-project/commit/45218e01d69ecb6428afcff19c9dde2cc792cdd6
DIFF: https://github.com/llvm/llvm-project/commit/45218e01d69ecb6428afcff19c9dde2cc792cdd6.diff

LOG: [NFC] Tweak docs for unique-object-duplication warning (#142158)

This improves the documentation for the unique-object-duplication
warning. It clarifies the conditions for the warning to fire, provides
clearer instructions on how to resolve it, and adjusts wording to be
more precise.

Added: 
    

Modified: 
    clang/include/clang/Basic/DiagnosticGroups.td

Removed: 
    


################################################################################
diff  --git a/clang/include/clang/Basic/DiagnosticGroups.td b/clang/include/clang/Basic/DiagnosticGroups.td
index abb5cefb1d2bb..60c650583801a 100644
--- a/clang/include/clang/Basic/DiagnosticGroups.td
+++ b/clang/include/clang/Basic/DiagnosticGroups.td
@@ -811,7 +811,7 @@ changes to one object won't affect the others, the object's initializer will run
 once per copy, etc.
 
 Specifically, this warning fires when it detects an object which:
-  1. Appears in a header file (so it might get compiled into multiple libaries), and
+  1. Is defined as ``inline`` in a header file (so it might get compiled into multiple libaries), and
   2. Has external linkage (otherwise it's supposed to be duplicated), and
   3. Has hidden visibility.
 
@@ -819,13 +819,17 @@ As well as one of the following:
   1. The object is mutable, or
   2. The object's initializer definitely has side effects.
 
-The warning is best resolved by making the object ``const`` (if possible), or by explicitly
-giving the object non-hidden visibility, e.g. using ``__attribute((visibility("default")))``.
-Note that all levels of a pointer variable must be constant; ``const int*`` will
-trigger the warning because the pointer itself is mutable.
+The warning can be resolved by removing one of the conditions above. In rough
+order of preference, this may be done by:
+  1. Marking the object ``const`` (if possible)
+  2. Moving the object's definition to a source file
+  3. Giving the object non-hidden visibility, e.g. using ``__attribute((visibility("default")))``.
 
-This warning is currently disabled on Windows since it uses import/export rules
-instead of visibility.
+Note that for (2), all levels of a pointer variable must be constant;
+``const int*`` will trigger the warning because the pointer itself is mutable.
+
+This warning is not yet implemented for Windows, since Windows uses
+import/export rules instead of visibility.
 }];
 }
 


        


More information about the cfe-commits mailing list