================
@@ -103,27 +114,226 @@ static cl::opt<bool>
ICPDUMPAFTER("icp-dumpafter", cl::init(false), cl::Hidden,
cl::desc("Dump IR after transformation happens"));
+// Indirect call promotion pass will fall back to function-based comparison if
+// vtable-count / function-count is smaller than this threshold.
----------------
minglotus-6 wrote:
> Is this the sum counts of all vtables corresponding to a candidate function?
For hot basic blocks, the counters are on the order of O(100k) or higher, and
the diff between vtable value profile counters and function value profile
counters is minuscule.
For iFDO, the value profile counters are collected per instruction (as opposed
to per basic block) by partially thread-safe function
['instrumentTargetValueImpl'](https://github.com/llvm/llvm-project/blob/31440738bd6b1345ea978914fe01d2e19f4aa373/compiler-rt/lib/profile/InstrProfilingValue.c#L150-L239)
, so the code doesn't assume them to be identical.
For SamplePGO type profile (WIP), the total count of one instruction is the
same as its basic block. So as long as 'vtable' and indirect call are in the
same basic block, the sum would be identical (both are the count of basic block)
https://github.com/llvm/llvm-project/pull/81442
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits