[all-commits] [llvm/llvm-project] 8a9596: [LoopPeel] Peel loops with deoptimizing exits

Max Kazantsev via All-commits all-commits at lists.llvm.org
Thu Oct 7 20:32:55 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 8a959625c433f311233682afa7bfe1c76367700d
      https://github.com/llvm/llvm-project/commit/8a959625c433f311233682afa7bfe1c76367700d
  Author: Max Kazantsev <mkazantsev at azul.com>
  Date:   2021-10-08 (Fri, 08 Oct 2021)

  Changed paths:
    M llvm/include/llvm/Transforms/Utils/BasicBlockUtils.h
    M llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
    M llvm/lib/Transforms/Utils/LoopPeel.cpp
    M llvm/test/Transforms/LoopUnroll/peel-multiple-unreachable-exits.ll

  Log Message:
  -----------
  [LoopPeel] Peel loops with deoptimizing exits

Added support for peeling loops with "deoptimizing" exits -
such exits that it or any of its children (or any of their
children, etc) either has a @llvm.experimental.deoptimize call
prior to the terminating return instruction of this basic block
or is terminated with unreachable. All blocks in the the
sequence must have a single successor, maybe except for the last
one.

Previously we only checked the exit block for being deoptimizing.
Now we check if the last reachable block from the exit is deoptimizing.

Patch by Dmitry Makogon!

Differential Revision: https://reviews.llvm.org/D110922
Reviewed By: mkazantsev




More information about the All-commits mailing list