From 48c6522f7147595cffbc9cec526e115a6ffd066b Mon Sep 17 00:00:00 2001 From: Paolo Carlini Date: Wed, 16 Sep 2015 15:14:39 +0000 Subject: [PATCH] invoke.texi ([Wsubobject-linkage]): Extend documentation. 2015-09-16 Paolo Carlini * doc/invoke.texi ([Wsubobject-linkage]): Extend documentation. From-SVN: r227828 --- gcc/ChangeLog | 4 ++++ gcc/doc/invoke.texi | 11 +++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cdbfe48f7c6..92f6354b337 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2015-09-16 Paolo Carlini + + * doc/invoke.texi ([Wsubobject-linkage]): Extend documentation. + 2015-09-16 Segher Boessenkool PR bootstrap/67587 diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 99c9685f8ed..547ee2d2f05 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -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 -- 2.30.2