invoke.texi ([Wsubobject-linkage]): Extend documentation.
authorPaolo Carlini <paolo.carlini@oracle.com>
Wed, 16 Sep 2015 15:14:39 +0000 (15:14 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Wed, 16 Sep 2015 15:14:39 +0000 (15:14 +0000)
2015-09-16  Paolo Carlini  <paolo.carlini@oracle.com>

* doc/invoke.texi ([Wsubobject-linkage]): Extend documentation.

From-SVN: r227828

gcc/ChangeLog
gcc/doc/invoke.texi

index cdbfe48f7c63ce4538f8c674d9fd02b244d6f372..92f6354b3375aec9b02318e29544bb231d1745c7 100644 (file)
@@ -1,3 +1,7 @@
+2015-09-16  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       * doc/invoke.texi ([Wsubobject-linkage]): Extend documentation.
+
 2015-09-16  Segher Boessenkool  <segher@kernel.crashing.org>
 
        PR bootstrap/67587
index 99c9685f8ed411237eee71598f45014ecf62a25c..547ee2d2f056fe23ef512c0e790804fcab29ea2d 100644 (file)
@@ -4942,8 +4942,15 @@ be useful to facilitate the conversion to @code{nullptr} in C++11.
 @opindex Wsubobject-linkage
 @opindex Wno-subobject-linkage
 Warn if a class type has a base or a field whose type uses the anonymous
-namespace or depends on a type with no linkage.  This warning is
-enabled by default.
+namespace or depends on a type with no linkage.  If a type A depends on
+a type B with no or internal linkage, defining it in multiple
+translation units would be an ODR violation because the meaning of B
+is different in each translation unit.  If A only appears in a single
+translation unit, the best way to silence the warning is to give it
+internal linkage by putting it in an anonymous namespace as well.  The
+compiler doesn't give this warning for types defined in the main .C
+file, as those are unlikely to have multiple definitions.
+@option{-Wsubobject-linkage} is enabled by default.
 
 @item -Wdate-time
 @opindex Wdate-time