1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00
llvm-mirror/tools
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
..
bugpoint Generalize the pass registration mechanism used by Polly to any third-party tool 2020-01-02 16:45:31 +01:00
bugpoint-passes [LegacyPassManager] Delete BasicBlockPass/Manager. 2019-10-30 11:40:16 -07:00
dsymutil [Dsymutil][Debuginfo][NFC] #4 Refactor dsymutil to separate DWARF optimizing part. 2020-01-23 18:16:32 +03:00
gold [LTO/WPD] Enable aggressive WPD under LTO option 2020-01-23 16:09:44 -08:00
llc [PowerPC][AIX] Make PIC the default relocation model for AIX 2020-01-16 13:07:36 -05:00
lli [ORC] Add support for emulated TLS to ORCv2. 2020-01-21 19:55:33 -08:00
llvm-ar [llvm-ranlib] Handle -D and -U command line flag 2020-01-02 13:44:05 +01:00
llvm-as Rename F_{None,Text,Append} to OF_{None,Text,Append}. NFC 2019-08-05 05:43:48 +00:00
llvm-as-fuzzer Fix some include order and file headers issues. NFC 2019-02-21 07:42:31 +00:00
llvm-bcanalyzer [llvm-bcanalyzer] Don't dump the contents if -dump is not passed 2019-11-13 10:38:57 -08:00
llvm-c-test Move the sysroot attribute from DIModule to DICompileUnit 2020-01-17 12:55:40 -08:00
llvm-cat Rename F_{None,Text,Append} to OF_{None,Text,Append}. NFC 2019-08-05 05:43:48 +00:00
llvm-cfi-verify Remove AllTargetsAsmPrinters 2020-01-17 19:04:06 -05:00
llvm-config llvm-config: do not link absolute paths with -l 2019-12-03 08:54:09 -08:00
llvm-cov [llvm-cov] Add support for -skip-functions to lcov 2020-01-22 12:49:00 -08:00
llvm-cvtres Share /machine: handling code with llvm-cvtres too 2019-06-12 11:32:43 +00:00
llvm-cxxdump [llvm/Object] - Make ELFObjectFile::getRelocatedSection return Expected<section_iterator> 2019-10-21 11:06:38 +00:00
llvm-cxxfilt [llvm-cxxfilt] Correctly demangle COFF import thunk 2019-12-16 09:50:04 -08:00
llvm-cxxmap Rename F_{None,Text,Append} to OF_{None,Text,Append}. NFC 2019-08-05 05:43:48 +00:00
llvm-diff llvm-diff: Perform structural comparison on GlobalVariables, if possible 2019-12-17 14:21:48 -05:00
llvm-dis [llvm-dis] Fix the disable-output flag 2019-11-14 13:35:21 -08:00
llvm-dwarfdump [llvm-dwarfdump][Statistics] Don't count coverage less than 1% as 0% 2019-12-13 17:34:58 +03:00
llvm-dwp [Mips] Use appropriate private label prefix based on Mips ABI 2019-10-23 12:24:35 +02:00
llvm-elfabi [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
llvm-exegesis [llvm-exegesis] Don't use unsupported aliasing instructions 2020-01-23 12:42:42 +01:00
llvm-extract [llvm-extract] Update the help message for group extraction feature 2019-08-20 20:45:16 +00:00
llvm-go Bump llvm-go to C++14 2019-08-15 10:55:25 +00:00
llvm-ifs [llvm] llvm-ifs: Support for handling empty IFS and merging weak+strong symbols. 2019-12-05 12:56:37 -05:00
llvm-isel-fuzzer Move CodeGenFileType enum to Support/CodeGen.h 2019-11-13 16:39:34 -08:00
llvm-itanium-demangle-fuzzer Fix file header issues in fuzzers. NFC 2019-02-21 07:57:14 +00:00
llvm-jitlink [ORC] Make ObjectLinkingLayer own its jitlink::MemoryManager. 2019-12-15 17:35:52 -08:00
llvm-jitlistener
llvm-link [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
llvm-lipo [llvm-lipo] Add support for -extract 2019-11-21 16:11:48 -08:00
llvm-lto [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
llvm-lto2 [ThinLTO] Pass CodeGenOpts like UnrollLoops/VectorizeLoop/VectorizeSLP 2020-01-09 21:13:11 -08:00
llvm-mc Remove AllTargetsAsmPrinters 2020-01-17 19:04:06 -05:00
llvm-mc-assemble-fuzzer Remove AllTargetsAsmPrinters 2020-01-17 19:04:06 -05:00
llvm-mc-disassemble-fuzzer Remove AllTargetsAsmPrinters 2020-01-17 19:04:06 -05:00
llvm-mca Remove AllTargetsAsmPrinters 2020-01-17 19:04:06 -05:00
llvm-microsoft-demangle-fuzzer
llvm-ml Fix build - removing legacy target reference. 2020-01-20 09:54:59 -05:00
llvm-modextract Rename F_{None,Text,Append} to OF_{None,Text,Append}. NFC 2019-08-05 05:43:48 +00:00
llvm-mt
llvm-nm Reland "[llvm-nm] Don't report "no symbols" error for files that contain symbols" 2020-01-17 10:08:42 -08:00
llvm-objcopy [llvm-objcopy][ELF] Allow setting SHF_EXCLUDE flag for ELF sections 2020-01-20 18:56:45 -08:00
llvm-objdump [llvm-objdump] - Fix the indentation when printing dynamic tags. 2020-01-20 12:29:50 +03:00
llvm-opt-fuzzer Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
llvm-opt-report [llvm-opt-report] Improve error handling 2019-09-13 20:52:04 +00:00
llvm-pdbutil Removed PointerUnion3 and PointerUnion4 aliases in favor of the variadic template 2020-01-14 18:56:29 +01:00
llvm-profdata [llvm-profdata] Fix hint message since argument format has changed 2020-01-20 20:57:03 +08:00
llvm-rc llvm-rc - fix uninitialized variable warnings. NFC. 2019-11-18 13:26:50 +00:00
llvm-readobj [llvm-readelf][llvm-readobj] - Fix the indentation when printing dynamic tags. 2020-01-21 14:24:50 +03:00
llvm-reduce llvm-reduce: Add a space to an option's --help 2019-12-05 19:46:16 -08:00
llvm-rtdyld [Mips] Use appropriate private label prefix based on Mips ABI 2019-10-23 12:24:35 +02:00
llvm-shlib [cmake] Explicitly mark libraries defined in lib/ as "Component Libraries" 2019-11-21 10:48:08 -08:00
llvm-size [llvm-size] print a blank line between archieve members when using sysv format 2020-01-03 14:05:55 +08:00
llvm-special-case-list-fuzzer
llvm-split Rename F_{None,Text,Append} to OF_{None,Text,Append}. NFC 2019-08-05 05:43:48 +00:00
llvm-stress [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
llvm-strings [binutils] Add response file option to help and docs 2019-06-21 11:49:20 +00:00
llvm-symbolizer [llvm-symbolizer]Fix printing of malformed address values not passed via stdin 2020-01-08 18:37:41 +08:00
llvm-undname [Demangle] Add a few more options to the microsoft demangler 2019-10-15 08:29:56 +00:00
llvm-xray [xray] add --no-demangle cli opt for llvm-xray extract to output mangled names 2020-01-16 16:37:00 -08:00
llvm-yaml-numeric-parser-fuzzer Fix file header issues in fuzzers. NFC 2019-02-21 07:57:14 +00:00
lto [LTO][Legacy] Add API for passing LLVM options separately 2019-11-19 16:30:37 -08:00
msbuild vs integration: bump version nbr 2019-06-19 07:39:53 +00:00
obj2yaml [DWARF] Return Error from DWARFDebugArangeSet::extract(). 2020-01-23 12:41:05 +07:00
opt [LTO/WPD] Enable aggressive WPD under LTO option 2020-01-23 16:09:44 -08:00
opt-viewer [llvm] [cmake] Add install targets for missing distribution components 2019-10-02 16:06:50 +00:00
remarks-shlib [Remarks] Add parser for bitstream remarks 2019-09-09 17:43:50 +00:00
sancov Remove AllTargetsAsmPrinters 2020-01-17 19:04:06 -05:00
sanstats [DebugInfo] add SectionedAddress to DebugInfo interfaces. 2019-02-27 13:17:36 +00:00
verify-uselistorder Rename F_{None,Text,Append} to OF_{None,Text,Append}. NFC 2019-08-05 05:43:48 +00:00
vfabi-demangle-fuzzer [SVFS] Vector Function ABI demangling. 2019-09-19 17:47:32 +00:00
xcode-toolchain
yaml2obj [yaml2obj/ObjectYAML] - Cleanup the error reporting API, add custom errors handlers. 2019-09-13 16:00:16 +00:00
CMakeLists.txt Generalize the pass registration mechanism used by Polly to any third-party tool 2020-01-02 16:45:31 +01:00
LLVMBuild.txt [llvm-ifs][IFS] llvm Interface Stubs merging + object file generation tool. 2019-08-30 18:26:05 +00:00