1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 19:23:23 +01:00
llvm-mirror/test/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
..
dsymutil [test] Move call-site-entry-linking.test into test/tools/dsymutil/X86 2020-01-15 14:19:55 -08:00
gold [LTO/WPD] Enable aggressive WPD under LTO option 2020-01-23 16:09:44 -08:00
llc Address redirect issue on Windows. 2020-01-16 15:07:50 -05:00
llvm-ar [llvm-ar] Improve tool selection heuristic 2019-12-10 17:32:50 -08:00
llvm-as
llvm-cfi-verify
llvm-config
llvm-cov [llvm-cov] Add support for -skip-functions to lcov 2020-01-22 12:49:00 -08:00
llvm-cvtres [COFF] Add a ResourceSectionRef method for getting resource contents 2019-08-30 06:55:49 +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 Fix non-portable GNU diff option 2019-10-23 11:19:01 -04:00
llvm-diff
llvm-dlltool [llvm-ar] Improve tool selection heuristic 2019-12-10 17:32:50 -08:00
llvm-dwarfdump [DWARF] Return Error from DWARFDebugArangeSet::extract(). 2020-01-23 12:41:05 +07:00
llvm-dwp Remove some unnecessary REQUIRES: shell lines 2019-09-10 00:06:52 +00:00
llvm-elfabi [test] Use yaml2obj -o %t instead of > %t 2020-01-21 17:20:18 -08:00
llvm-exegesis [llvm-exegesis] Fix support for LEA64_32r. 2020-01-21 13:58:23 +01:00
llvm-extract
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
llvm-lib Migrate function attribute "no-frame-pointer-elim"="false" to "frame-pointer"="none" as cleanups after D56351 2019-12-24 16:27:51 -08:00
llvm-lipo [test] Use yaml2obj -o %t instead of > %t 2020-01-21 17:20:18 -08:00
llvm-lit
llvm-locstats [llvm-dwarfdump][Statistics] Don't count coverage less than 1% as 0% 2019-12-13 17:34:58 +03:00
llvm-lto BitStream reader: propagate errors 2019-06-26 19:50:12 +00:00
llvm-lto2 Revert "[Support] make report_fatal_error abort instead of exit" 2020-01-15 17:52:25 -08:00
llvm-mc [lit] Delete empty lines at the end of lit.local.cfg NFC 2019-06-17 09:51:07 +00:00
llvm-mca [llvm-mca][NFC] Regenerate tests @HEAD. 2020-01-22 14:50:52 +01:00
llvm-ml [ms] [llvm-ml] Add placeholder for llvm-ml, based on llvm-mc 2020-01-20 09:19:10 -05:00
llvm-modextract
llvm-mt
llvm-nm [test] Use yaml2obj -o %t instead of > %t 2020-01-21 17:20:18 -08:00
llvm-objcopy [test] Use yaml2obj -o %t instead of > %t 2020-01-21 17:20:18 -08:00
llvm-objdump [test] Use yaml2obj -o %t instead of > %t 2020-01-21 17:20:18 -08:00
llvm-opt-fuzzer
llvm-opt-report
llvm-pdbutil llvm-pdbdump: Fix several smaller issues with injected source compression handling 2019-07-17 22:59:52 +00:00
llvm-profdata [llvm-profdata] Fix hint message since argument format has changed 2020-01-20 20:57:03 +08:00
llvm-ranlib [llvm-ranlib] Update expected error message check for Windows 2020-01-02 18:00:04 +00:00
llvm-rc [llvm-readobj] Print the resource type textually for .res files 2019-08-29 08:59:31 +00:00
llvm-readobj [llvm-readobj][test] - Add a check for --dyn-syms. 2020-01-23 12:20:19 +03:00
llvm-size [test] Use yaml2obj -o %t instead of > %t 2020-01-21 17:20:18 -08:00
llvm-split
llvm-strings [llvm-strings][test] Merge two closely related tests 2019-09-02 11:42:30 +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-xray [xray] add --no-demangle cli opt for llvm-xray extract to output mangled names 2020-01-16 16:37:00 -08:00
lto
obj2yaml [DWARF] Return Error from DWARFDebugArangeSet::extract(). 2020-01-23 12:41:05 +07:00
opt-viewer
sancov Revert 374629 "[sancov] Accommodate sancov and coverage report server for use under Windows" 2019-10-12 05:23:43 +00:00
sanstats [test] Use yaml2obj -o %t instead of > %t 2020-01-21 17:20:18 -08:00
UpdateTestChecks Make mangled_names.test and update_cc_test_checks.py work with Python 2. 2020-01-02 13:45:39 -05:00
yaml2obj [test] Use yaml2obj -o %t instead of > %t 2020-01-21 17:20:18 -08:00