[all-commits] [llvm/llvm-project] b8ef25: [PGO] Fix zeroed estimated trip count (#167792)

Joel E. Denny via All-commits all-commits at lists.llvm.org
Tue Nov 25 08:05:36 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: b8ef25aa643761233dc5b74d9fb7c38a2064d9c7
      https://github.com/llvm/llvm-project/commit/b8ef25aa643761233dc5b74d9fb7c38a2064d9c7
  Author: Joel E. Denny <jdenny.ornl at gmail.com>
  Date:   2025-11-25 (Tue, 25 Nov 2025)

  Changed paths:
    M llvm/docs/LangRef.rst
    M llvm/include/llvm/Transforms/Utils/LoopUtils.h
    M llvm/lib/Transforms/Utils/LoopUtils.cpp
    A llvm/test/Transforms/LoopVectorize/vectorize-zero-estimated-trip-count.ll
    M llvm/test/Verifier/llvm.loop.estimated_trip_count.ll
    M llvm/unittests/Transforms/Utils/LoopUtilsTest.cpp

  Log Message:
  -----------
  [PGO] Fix zeroed estimated trip count (#167792)

Before PR #152775, `llvm::getLoopEstimatedTripCount` never returned 0.
If `llvm::setLoopEstimatedTripCount` were called with 0, it would zero
branch weights, causing `llvm::getLoopEstimatedTripCount` to return
`std::nullopt`.

PR #152775 changed that behavior: if `llvm::setLoopEstimatedTripCount`
is called with 0, it sets `llvm.loop.estimated_trip_count` to 0, causing
`llvm::getLoopEstimatedTripCount` to return 0. However, it kept
documentation saying `llvm::getLoopEstimatedTripCount` returns a
positive count.

Some passes continue to assume `llvm::getLoopEstimatedTripCount` never
returns 0 and crash if it does, as reported in issue #164254. To restore
the behavior they expect, this patch changes
`llvm::getLoopEstimatedTripCount` to return `std::nullopt` when
`llvm.loop.estimated_trip_count` is 0.



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list