[all-commits] [llvm/llvm-project] 103fc0: [SCEV] Replace IsAvailableOnEntry with block dispo...

Nikita Popov via All-commits all-commits at lists.llvm.org
Fri Apr 28 02:02:21 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 103fc0f629aa6218783f65dff0197f257137cade
      https://github.com/llvm/llvm-project/commit/103fc0f629aa6218783f65dff0197f257137cade
  Author: Nikita Popov <npopov at redhat.com>
  Date:   2023-04-28 (Fri, 28 Apr 2023)

  Changed paths:
    M llvm/lib/Analysis/ScalarEvolution.cpp
    M llvm/test/Analysis/ScalarEvolution/logical-operations.ll

  Log Message:
  -----------
  [SCEV] Replace IsAvailableOnEntry with block disposition

As far as I understand, the IsAvailableOnEntry() function basically
implements the same functionality as the properlyDominates() block
disposition. The primary difference (apart from a weaker
implementation) seems to be in this comment at the top:

    // Checks if the SCEV S is available at BB.  S is considered available at BB
    // if S can be materialized at BB without introducing a fault.

However, I don't really understand why there would be such a
requirement. It's my understanding that SCEV explicitly does not
care about trapping udiv instructions itself, and it's the job of
SCEVExpander's isSafeToExpand() to make sure these don't get
expanded if they may trap.

Differential Revision: https://reviews.llvm.org/D149344




More information about the All-commits mailing list