================ @@ -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