Lines Matching full:indirect
9 // This file implements the transformation that promotes indirect calls to
10 // conditional direct calls when the indirect-call value profile metadata is
56 STATISTIC(NumOfPGOICallPromotion, "Number of indirect call promotions.");
57 STATISTIC(NumOfPGOICallsites, "Number of indirect call candidate sites.");
65 // Command line option to disable indirect-call promotion with the default as
68 cl::desc("Disable indirect call promotion"));
88 cl::desc("Run indirect-call promotion in LTO "
95 cl::desc("Run indirect-call promotion in SamplePGO mode"));
101 cl::desc("Run indirect-call promotion for call instructions "
108 cl::desc("Run indirect-call promotion for "
117 // Indirect call promotion pass will fall back to function-based comparison if
235 // to the cold indirect call fallback.
282 // Try to sink instructions after VPtr to the indirect call fallback.
299 // Promote indirect calls to conditional direct calls, keeping track of
308 // Symtab that maps indirect call profile values to function names and
339 // Check if the indirect-call call site should be promoted. Return the number
340 // of promotions. Inst is the candidate indirect call, ValueDataRef
348 // Promote a list of targets for one indirect-call callsite by comparing
349 // indirect callee with functions. Return true if there are IR
358 // Promote a list of targets for one indirect call by comparing vtables with
372 // Given an indirect callsite and the list of function candidates, compute
410 // Indirect-call promotion heuristic. The direct targets are sorted based on
472 << "Cannot promote indirect call: target with md5sum "
484 << "Cannot promote indirect call to "
526 // Step 1. Find out the %vptr instruction for indirect call and use its !prof
623 << "Promote indirect call to " << NV("DirectCallee", DirectCallee)
630 // Promote indirect-call to conditional direct-call for one callsite.
670 // Update value profiles on the indirect call.
723 // 'OriginalBB' is the basic block of indirect call. After each candidate
724 // is promoted, a new basic block is created for the indirect fallback basic
725 // block and indirect call `CB` is moved into this new BB.
738 Remark << "Promote indirect call to "
781 // updated properly in that case (e.g, for each indirect call annotate both
803 // Traverse all the indirect-call callsite and get the value profile
804 // annotation to perform indirect-call promotion.
837 // cannot sink to indirect fallback.
891 // If the indirect fallback is not cold, don't compare vtables.
894 LLVM_DEBUG(dbgs() << " Indirect fallback basic block is not cold. Bail "
914 // refined to llvm.type.test or dropped before indirect-call-promotion pass.
928 // Iterate all type.test calls to find all indirect calls.
949 // Given an indirect call, try find the instruction which loads a