[llvm] [TRE] Adjust function entry count when using instrumented profiles (PR #143987)

Mircea Trofin via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 20 11:46:52 PDT 2025


================
@@ -735,6 +756,28 @@ bool TailRecursionEliminator::eliminateCall(CallInst *CI) {
   CI->eraseFromParent();   // Remove call.
   DTU.applyUpdates({{DominatorTree::Insert, BB, HeaderBB}});
   ++NumEliminated;
+  if (OrigEntryBBFreq) {
+    assert(F.getEntryCount().has_value());
+    // This pass is not expected to remove BBs, only add an entry BB. For that
+    // reason, and because the BB here isn't the new entry BB, the BFI lookup is
+    // expected to succeed.
+    assert(&F.getEntryBlock() != BB);
+    auto RelativeBBFreq =
+        static_cast<double>(BFI->getBlockFreq(BB).getFrequency()) /
+        static_cast<double>(OrigEntryBBFreq);
+    auto OldEntryCount = F.getEntryCount()->getCount();
----------------
mtrofin wrote:

Oh - good catch! Because the frequency of the BB with the callsite is actually higher wrt the new entry BB. But the easier way would be to use the original entrycount. Fixed

https://github.com/llvm/llvm-project/pull/143987


More information about the llvm-commits mailing list