diff options
author | Teresa Johnson <tejohnson@google.com> | 2020-01-24 12:24:18 -0800 |
---|---|---|
committer | Teresa Johnson <tejohnson@google.com> | 2020-01-27 07:55:05 -0800 |
commit | 2f63d549f1e1edd165392837aaa53f569f7fb88d (patch) | |
tree | 61db1979f4f195e45d48a2b3d9a28dc29ef7c744 /llvm/lib/LTO/LTO.cpp | |
parent | bc3d900fa5fc537163b8556a6b59925231bc4d09 (diff) | |
download | llvm-2f63d549f1e1edd165392837aaa53f569f7fb88d.zip llvm-2f63d549f1e1edd165392837aaa53f569f7fb88d.tar.gz llvm-2f63d549f1e1edd165392837aaa53f569f7fb88d.tar.bz2 |
Restore "[LTO/WPD] Enable aggressive WPD under LTO option"
This restores 59733525d37cf9ad88b5021b33ecdbaf2e18911c (D71913), along
with bot fix 19c76989bb505c3117730c47df85fd3800ea2767.
The bot failure should be fixed by D73418, committed as
af954e441a5170a75687699d91d85e0692929d43.
I also added a fix for non-x86 bot failures by requiring x86 in new test
lld/test/ELF/lto/devirt_vcall_vis_public.ll.
Diffstat (limited to 'llvm/lib/LTO/LTO.cpp')
-rw-r--r-- | llvm/lib/LTO/LTO.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/llvm/lib/LTO/LTO.cpp b/llvm/lib/LTO/LTO.cpp index 297b11d..e8f0fd6 100644 --- a/llvm/lib/LTO/LTO.cpp +++ b/llvm/lib/LTO/LTO.cpp @@ -982,6 +982,11 @@ Error LTO::runRegularLTO(AddStreamFn AddStream) { } } + // If allowed, upgrade public vcall visibility metadata to linkage unit + // visibility before whole program devirtualization in the optimizer. + updateVCallVisibilityInModule(*RegularLTO.CombinedModule, + Conf.HasWholeProgramVisibility); + if (Conf.PreOptModuleHook && !Conf.PreOptModuleHook(0, *RegularLTO.CombinedModule)) return Error::success(); @@ -1299,6 +1304,11 @@ Error LTO::runThinLTO(AddStreamFn AddStream, NativeObjectCache Cache, std::set<GlobalValue::GUID> ExportedGUIDs; + // If allowed, upgrade public vcall visibility to linkage unit visibility in + // the summaries before whole program devirtualization below. + updateVCallVisibilityInIndex(ThinLTO.CombinedIndex, + Conf.HasWholeProgramVisibility); + // Perform index-based WPD. This will return immediately if there are // no index entries in the typeIdMetadata map (e.g. if we are instead // performing IR-based WPD in hybrid regular/thin LTO mode). |