summaryrefslogtreecommitdiff
path: root/docs/LTOVisibility.rst
diff options
context:
space:
mode:
authorPeter Collingbourne <peter@pcc.me.uk>2017-04-10 23:54:28 +0000
committerPeter Collingbourne <peter@pcc.me.uk>2017-04-10 23:54:28 +0000
commitf07ecb81a8447ecbc10fd2560310099b7e7b4bf0 (patch)
tree9a28da586a149f668d51aa16ebdce10d04241de0 /docs/LTOVisibility.rst
parentc84d5c0f2c446782b67433aa25185657b2048856 (diff)
downloadclang-f07ecb81a8447ecbc10fd2560310099b7e7b4bf0.tar.gz
docs: Use the term "whole-program devirtualization" instead of "virtual function call optimization".
The former term is probably more familiar to users. Also add references to the command line flags used to enable the features described in the doc. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@299902 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs/LTOVisibility.rst')
-rw-r--r--docs/LTOVisibility.rst17
1 files changed, 9 insertions, 8 deletions
diff --git a/docs/LTOVisibility.rst b/docs/LTOVisibility.rst
index 67367f3d63..e1372d667a 100644
--- a/docs/LTOVisibility.rst
+++ b/docs/LTOVisibility.rst
@@ -10,15 +10,16 @@ using link-time optimization; in the case where LTO is not being used, the
linkage unit's LTO unit is empty. Each linkage unit has only a single LTO unit.
The LTO visibility of a class is used by the compiler to determine which
-classes the virtual function call optimization and control flow integrity
-features apply to. These features use whole-program information, so they
-require the entire class hierarchy to be visible in order to work correctly.
-
-If any translation unit in the program uses either of the virtual function
-call optimization or control flow integrity features, it is effectively an
-ODR violation to define a class with hidden LTO visibility in multiple linkage
+classes the whole-program devirtualization (``-fwhole-program-vtables``) and
+control flow integrity (``-fsanitize=cfi-vcall``) features apply to. These
+features use whole-program information, so they require the entire class
+hierarchy to be visible in order to work correctly.
+
+If any translation unit in the program uses either of the whole-program
+devirtualization or control flow integrity features, it is effectively an ODR
+violation to define a class with hidden LTO visibility in multiple linkage
units. A class with public LTO visibility may be defined in multiple linkage
-units, but the tradeoff is that the virtual function call optimization and
+units, but the tradeoff is that the whole-program devirtualization and
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.