[Docs] Document --lto-whole-program-visibility

Summary:
Documents interaction of linker option added in D71913 with LTO
visibility.

Reviewers: pcc

Subscribers: inglorion, hiraditya, steven_wu, dexonsmith, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D75655
This commit is contained in:
Teresa Johnson
2020-03-04 15:38:45 -08:00
parent 30967e51da
commit 72bdb41a06

View File

@@ -35,6 +35,16 @@ other classes receive hidden LTO visibility. Classes with internal linkage
(e.g. classes declared in unnamed namespaces) also receive hidden LTO
visibility.
During the LTO link, all classes with public LTO visibility will be refined
to hidden LTO visibility when the ``--lto-whole-program-visibility`` lld linker
option is applied (``-plugin-opt=whole-program-visibility`` for gold). This flag
can be used to defer specifying whether classes have hidden LTO visibility until
link time, to allow bitcode objects to be shared by different LTO links.
Due to an implementation limitation, symbols associated with classes with hidden
LTO visibility may still be exported from the binary when using this flag. It is
unsafe to refer to these symbols, and their visibility may be relaxed to hidden
in a future compiler release.
A class defined in a translation unit built without LTO receives public
LTO visibility regardless of its object file visibility, linkage or other
attributes.