llvm-project/llvm/test/ThinLTO/X86
Teresa Johnson f24136f17a [WPD] Fix incorrect devirtualization after indirect call promotion
Summary:
Add a dominance check to ensure that the possible devirtualizable
call is actually dominated by the type test/checked load intrinsic being
analyzed. With PGO, after indirect call promotion is performed during
the compile step, followed by inlining, we may have a type test in the
promoted and inlined sequence that allows an indirect call in that
sequence to be devirtualized. That indirect call (inserted by inlining
after promotion) will share the same vtable pointer as the fallback
indirect call that cannot be devirtualized.

Before this patch the code was incorrectly devirtualizing the fallback
indirect call.

See the new test and the example described there for more details.

Reviewers: pcc, vitalybuka

Subscribers: mehdi_amini, Prazek, eraman, steven_wu, dexonsmith, llvm-commits

Differential Revision: https://reviews.llvm.org/D52514

llvm-svn: 343226
2018-09-27 14:55:32 +00:00
..
Inputs [ThinLTO] Write TYPE_IDs for types used in functions imported by aliases 2018-09-19 18:51:42 +00:00
alias_import.ll [FileCheck] Add -allow-deprecated-dag-overlap to failing llvm tests 2018-07-11 20:25:49 +00:00
alias_resolution.ll
autoupgrade.ll [ThinLTO] Add string saver onto index for value names 2018-06-26 02:29:08 +00:00
cache-config.ll [X86] Make Feature64Bit useful 2018-08-30 06:01:05 +00:00
cache-icall.ll
cache-import-lists.ll
cache-typeid-resolutions.ll
cache.ll Reland r342233: [ThinLTO] Allow setting of maximum cache size with 64-bit number 2018-09-17 10:21:26 +00:00
callees-metadata.ll [ThinLTO] Add funtions in callees metadata to CallGraphEdges 2018-03-13 04:26:58 +00:00
cfi-devirt.ll [LTO] Make detection of WPD remark enablement more robust 2018-09-18 13:42:24 +00:00
cfi-distributed.ll [ThinLTO] Write TYPE_IDs for types used in functions imported by aliases 2018-09-19 18:51:42 +00:00
cfi-icall.ll [LowerTypeTests] Limit when icall jumptable entries are emitted 2018-07-13 19:57:39 +00:00
cfi.ll [ThinLTO] Enable ThinLTO WholeProgramDevirt and LowerTypeTests in new PM 2018-07-19 14:51:32 +00:00
crash_debuginfo.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
deadstrip.ll [ThinLTO] Fix test 2018-06-27 19:00:35 +00:00
debuginfo-compositetype-import.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
debuginfo-cu-import.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
devirt-after-icp.ll [WPD] Fix incorrect devirtualization after indirect call promotion 2018-09-27 14:55:32 +00:00
diagnostic-handler-remarks-with-hotness.ll Enrich inline messages 2018-08-05 14:53:08 +00:00
diagnostic-handler-remarks.ll Enrich inline messages 2018-08-05 14:53:08 +00:00
dicompositetype-unique-alias.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
dicompositetype-unique.ll
dicompositetype-unique2.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
distributed_import.ll
distributed_indexes.ll [ThinLTO] Fix printing of aliases for distributed backend indexes 2018-07-03 01:11:43 +00:00
dot-dumper.ll
drop-debug-info.ll
dsolocal_dllimport.ll [ThinLTO] Clear dllimport when setting dso_local. 2018-03-13 15:24:51 +00:00
emit_imports.ll [ThinLTO] Use std::map to get determistic imports files 2018-07-10 20:06:04 +00:00
empty-module.ll
empty_module_with_cache.ll
export.ll
funcimport-debug.ll [ThinLTO] Print names in function import debug messages when available 2018-06-27 18:03:39 +00:00
funcimport-tbaa.ll
funcimport.ll
funcimport2.ll [ThinLTO] Add option for printing import failure reasons 2018-08-17 16:53:47 +00:00
globals-import-const-fold.ll [ThinLTO] Recommit of import global variables 2018-03-12 10:30:50 +00:00
globals-import.ll [ThinLTO] Recommit of import global variables 2018-03-12 10:30:50 +00:00
import_opaque_type.ll
internalize.ll
lazyload_metadata.ll
linkonce_aliasee_ref_import.ll
linkonce_odr_unnamed_addr.ll
linkonce_resolution_comdat.ll
lit.local.cfg
llvm.used.ll
local_name_conflict.ll
merge-triple.ll
module_asm2.ll
module_asm_glob.ll
module_summary_graph_traits.ll [ThinLTO] Add GraphTraits for FunctionSummaries 2018-02-19 15:14:50 +00:00
newpm-basic.ll
noinline.ll
personality-local.ll
personality.ll
prefix_replace.ll
reference_non_importable.ll
referenced_by_constant.ll
save_objects.ll
section.ll
tli-nobuiltin.ll
weak_resolution.ll
weak_resolution_single.ll