================
@@ -1260,6 +1260,8 @@ void annotateValueSite(Module &M, Instruction &Inst,
                        ArrayRef<InstrProfValueData> VDs,
                        uint64_t Sum, InstrProfValueKind ValueKind,
                        uint32_t MaxMDCount) {
+  if (VDs.empty())
----------------
minglotus-6 wrote:

yes, the check `NumPromoted == NumVals` is removed so `NumVals` doesn't need to 
be passed as an argument to `tryToPromoteWithFuncCmp`.
- `NumVals == ICallProfDataRef.size()` is [always 
true](https://github.com/llvm/llvm-project/blob/0d7f232baf6103529844c8977324bd45b21ad923/llvm/lib/Analysis/IndirectCallPromotionAnalysis.cpp#L98),
 and `NumPromoted <= NumVals` is also true, so 
`ICallProfDataRef.slice(NumPromoted)` still returns a valid ArrayRef after the 
check is removed.

On a second thought, when `if(TotalCount != 0)` is true, it's also guaranteed 
`ICallProfDataRef.slice(NumPromoted)` is not empty so that 
`ICallProfDataRef.slice(NumPromoted)` returns a valid ArrayRef. Added an assert 
(`assert(NumPromoted <= ICallProfDataRef.size()`) just to make the condition 
that `.slice` relies on more explicit.

https://github.com/llvm/llvm-project/pull/80762
_______________________________________________
llvm-branch-commits mailing list
llvm-branch-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to