1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 03:33:20 +01:00
llvm-mirror/include/llvm
Teresa Johnson 7a368427db [LTO/WPD] Enable aggressive WPD under LTO option
Summary:
Third part in series to support Safe Whole Program Devirtualization
Enablement, see RFC here:
http://lists.llvm.org/pipermail/llvm-dev/2019-December/137543.html

This patch adds type test metadata under -fwhole-program-vtables,
even for classes without hidden visibility. It then changes WPD to skip
devirtualization for a virtual function call when any of the compatible
vtables has public vcall visibility.

Additionally, internal LLVM options as well as lld and gold-plugin
options are added which enable upgrading all public vcall visibility
to linkage unit (hidden) visibility during LTO. This enables the more
aggressive WPD to kick in based on LTO time knowledge of the visibility
guarantees.

Support was added to all flavors of LTO WPD (regular, hybrid and
index-only), and to both the new and old LTO APIs.

Unfortunately it was not simple to split the first and second parts of
this part of the change (the unconditional emission of type tests and
the upgrading of the vcall visiblity) as I needed a way to upgrade the
public visibility on legacy WPD llvm assembly tests that don't include
linkage unit vcall visibility specifiers, to avoid a lot of test churn.

I also added a mechanism to LowerTypeTests that allows dropping type
test assume sequences we now aggressively insert when we invoke
distributed ThinLTO backends with null indexes, which is used in testing
mode, and which doesn't invoke the normal ThinLTO backend pipeline.

Depends on D71907 and D71911.

Reviewers: pcc, evgeny777, steven_wu, espindola

Subscribers: emaste, Prazek, inglorion, arichardson, hiraditya, MaskRay, dexonsmith, dang, davidxl, cfe-commits, llvm-commits

Tags: #clang, #llvm

Differential Revision: https://reviews.llvm.org/D71913
2020-01-23 16:09:44 -08:00
..
ADT Add LLVM_VALUE_FUNCTION to Optional::map(); NFC 2020-01-22 14:21:08 -05:00
Analysis NFC. Remove obsolete SimpleAnalysis infrastructure 2020-01-23 13:58:30 +07:00
AsmParser
BinaryFormat Fix build bot failures. 2020-01-23 13:14:21 +07:00
Bitcode
Bitstream
CodeGen GlobalISel: Add MIPatternMatch for G_ICMP/G_FCMP 2020-01-23 13:30:47 -08:00
Config build: reduce CMake handling for zlib 2020-01-02 11:19:12 -08:00
DebugInfo [PDB] Simplify API for making section map, NFC 2020-01-23 12:15:21 -08:00
Demangle
DWARFLinker Fix GCC warning/error '-fpermission'. NFC. 2020-01-23 10:45:02 -05:00
ExecutionEngine [ORC] Add support for emulated TLS to ORCv2. 2020-01-21 19:55:33 -08:00
Frontend/OpenMP Fix Wdocumentation warnings. NFCI. 2020-01-07 10:55:38 +00:00
FuzzMutate
IR [ThinLTO] Summarize vcall_visibility metadata 2020-01-23 13:19:56 -08:00
IRReader
LineEditor
Linker
LTO [LTO/WPD] Enable aggressive WPD under LTO option 2020-01-23 16:09:44 -08:00
MC [RISCV] Fix evaluating %pcrel_lo against global and weak symbols 2020-01-23 02:05:48 +00:00
MCA
Object
ObjectYAML [yaml2obj/obj2yaml] - Add support for SHT_RELR sections. 2020-01-15 15:15:24 +03:00
Option
Passes [llvm] Make new pass manager's OptimizationLevel a class 2020-01-16 09:00:56 -08:00
ProfileData [profile] Support counter relocation at runtime 2020-01-17 15:02:23 -08:00
Remarks
Support Add a comment about when we can remove this construct; NFC. 2020-01-22 13:17:38 -05:00
TableGen
Target [NFC][XCOFF] Refactor Csect creation into TargetLoweringObjectFile 2020-01-22 12:09:11 -05:00
Testing/Support
TextAPI
ToolDrivers
Transforms [LTO/WPD] Enable aggressive WPD under LTO option 2020-01-23 16:09:44 -08:00
WindowsManifest
WindowsResource
XRay
CMakeLists.txt
InitializePasses.h [NewPM] Port MergeFunctions pass 2020-01-14 20:55:41 +01:00
LinkAllIR.h
LinkAllPasses.h
module.extern.modulemap
module.install.modulemap
module.modulemap [CMake] Fix modules build after DWARFLinker reorganization 2020-01-10 11:06:38 -08:00
module.modulemap.build
Pass.h
PassAnalysisSupport.h
PassInfo.h
PassRegistry.h
PassSupport.h