llvm-project/llvm/test/Transforms/PGOProfile
Matthew Simpson cb35c5d5c2 [ICP] Expose unconditional call promotion interface
This patch modifies the indirect call promotion utilities by exposing and using
an unconditional call promotion interface. The unconditional promotion
interface (i.e., call promotion without creating an if-then-else) can be used
if it's known that an indirect call has only one possible callee. The existing
conditional promotion interface uses this unconditional interface to promote an
indirect call after it has been versioned and placed within the "then" block.

A consequence of unconditional promotion is that the fix-up operations for phi
nodes in the normal destination of invoke instructions are changed. This is
necessary because the existing implementation assumed that an invoke had been
versioned, creating a "merge" block where a return value bitcast could be
placed. In the new implementation, the edge between a promoted invoke's parent
block and its normal destination is split if needed to add a bitcast for the
return value. If the invoke is also versioned, the phi node merging the return
value of the promoted and original invoke instructions is placed in the "merge"
block.

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

llvm-svn: 321210
2017-12-20 19:26:37 +00:00
..
Inputs [PGO] add MST min edge selection heuristic to ensure non-zero entry count 2017-12-18 17:56:19 +00:00
X86
PR28219.ll
branch1.ll [PGO] add MST min edge selection heuristic to ensure non-zero entry count 2017-12-18 17:56:19 +00:00
branch2.ll
comdat_internal.ll
comdat_rename.ll
counter_promo.ll [PGO] add MST min edge selection heuristic to ensure non-zero entry count 2017-12-18 17:56:19 +00:00
counter_promo_exit_merge.ll [PGO] Enhance pgo counter promotion 2017-07-12 23:27:44 +00:00
counter_promo_mexits.ll [PGO] Enhance pgo counter promotion 2017-07-12 23:27:44 +00:00
counter_promo_nest.ll [PGO] Enhance pgo counter promotion 2017-07-12 23:27:44 +00:00
criticaledge.ll
diag_FE_profile.ll
diag_mismatch.ll
diag_no_funcprofdata.ll
diag_no_profile.ll
do-not-instrument.ll
icp_covariant_call_return.ll [ICP] Expose unconditional call promotion interface 2017-12-20 19:26:37 +00:00
icp_covariant_invoke_return.ll [ICP] Expose unconditional call promotion interface 2017-12-20 19:26:37 +00:00
icp_invoke.ll [ICP] Expose unconditional call promotion interface 2017-12-20 19:26:37 +00:00
icp_invoke_nouse.ll [ICP] Expose unconditional call promotion interface 2017-12-20 19:26:37 +00:00
icp_mismatch_msg.ll [ICP] Migrate to OptimizationRemarkEmitter 2017-07-27 16:54:15 +00:00
icp_sample.ll Add null check for promoted direct call 2017-08-29 15:28:12 +00:00
icp_vararg.ll [ICP] Expose unconditional call promotion interface 2017-12-20 19:26:37 +00:00
indirect_call_annotation.ll
indirect_call_profile.ll
indirect_call_promotion.ll [ICP] Expose unconditional call promotion interface 2017-12-20 19:26:37 +00:00
indirectbr.ll Split IndirectBr critical edges before PGO gen/use passes. 2017-12-12 19:07:43 +00:00
infinite_loop.ll [PGO] Skip counter promotion for infinite loops 2017-11-30 19:16:25 +00:00
infinite_loop_gen.ll [PGO] add MST min edge selection heuristic to ensure non-zero entry count 2017-12-18 17:56:19 +00:00
irreducible.ll Add heuristics for irreducible loop metadata under PGO 2017-11-20 21:03:38 +00:00
landingpad.ll [PGO] add MST min edge selection heuristic to ensure non-zero entry count 2017-12-18 17:56:19 +00:00
loop1.ll [PGO] add MST min edge selection heuristic to ensure non-zero entry count 2017-12-18 17:56:19 +00:00
loop2.ll [PGO] add MST min edge selection heuristic to ensure non-zero entry count 2017-12-18 17:56:19 +00:00
memcpy.ll
memop_clone.ll [PGO] Fixed assertion due to mismatched memcpy size type. 2017-08-18 19:17:08 +00:00
memop_size_annotation.ll
memop_size_from_strlen.ll [PATCH] [PGO] Fixed cast operation in emIntrinsicVisitor::instrumentOneMemIntrinsic. 2017-06-19 20:04:33 +00:00
memop_size_opt.ll Keep Optimization Remark Yaml in NewPM 2017-08-20 01:30:45 +00:00
memop_size_opt_zero.ll Memory intrinsic value profile optimization: Avoid divide by 0 2017-04-28 14:30:54 +00:00
multiple_hash_profile.ll
noreturncall.ll [PGO] add MST min edge selection heuristic to ensure non-zero entry count 2017-12-18 17:56:19 +00:00
preinline.ll
select1.ll
select2.ll
single_bb.ll
split-indirectbr-critical-edges.ll Split IndirectBr critical edges before PGO gen/use passes. 2017-12-12 19:07:43 +00:00
statics_counter_naming.ll
switch.ll
thinlto_indirect_call_promotion.ll Make ICP uses PSI to check for hotness. 2017-08-08 20:57:33 +00:00
thinlto_samplepgo_icp.ll Make ICP uses PSI to check for hotness. 2017-08-08 20:57:33 +00:00
thinlto_samplepgo_icp2.ll [LTO] Make processing of combined module more consistent 2017-12-16 02:10:00 +00:00
thinlto_samplepgo_icp3.ll [ThinLTO] Fix dead stripping analysis for SamplePGO 2017-09-20 17:09:47 +00:00
unreachable_bb.ll