]> granicus.if.org Git - clang/commitdiff
docs: Clarify that LTO visibility is based on source-level symbol visibility.
authorPeter Collingbourne <peter@pcc.me.uk>
Fri, 27 May 2016 22:31:30 +0000 (22:31 +0000)
committerPeter Collingbourne <peter@pcc.me.uk>
Fri, 27 May 2016 22:31:30 +0000 (22:31 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@271063 91177308-0d34-0410-b5e6-96231b3b80d8

docs/LTOVisibility.rst

index 21a3157c8344b71eff20cb4b68ef9ed5a06e5e81..67367f3d635eaeac56e233d045a496d652a16ce9 100644 (file)
@@ -23,14 +23,16 @@ control flow integrity features can only be applied to classes with hidden LTO
 visibility. A class's LTO visibility is treated as an ODR-relevant property
 of its definition, so it must be consistent between translation units.
 
-In translation units built with LTO, LTO visibility is based on symbol
-visibility or, on the Windows platform, the dllimport and dllexport
-attributes. When targeting non-Windows platforms, classes with a visibility
-other than hidden visibility receive public LTO visibility. When targeting
-Windows, classes with dllimport or dllexport attributes receive public LTO
-visibility. All other classes receive hidden LTO visibility. Classes with
-internal linkage (e.g. classes declared in unnamed namespaces) also receive
-hidden LTO visibility.
+In translation units built with LTO, LTO visibility is based on the
+class's symbol visibility as expressed at the source level (i.e. the
+``__attribute__((visibility("...")))`` attribute, or the ``-fvisibility=``
+flag) or, on the Windows platform, the dllimport and dllexport attributes. When
+targeting non-Windows platforms, classes with a visibility other than hidden
+visibility receive public LTO visibility. When targeting Windows, classes
+with dllimport or dllexport attributes receive public LTO visibility. All
+other classes receive hidden LTO visibility. Classes with internal linkage
+(e.g. classes declared in unnamed namespaces) also receive hidden LTO
+visibility.
 
 A class defined in a translation unit built without LTO receives public
 LTO visibility regardless of its object file visibility, linkage or other