[all-commits] [llvm/llvm-project] 0e0ff8: [GuardWidening] Refactor to work with the list of ...

Aleksandr Popov via All-commits all-commits at lists.llvm.org
Wed Sep 6 07:51:07 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 0e0ff8573de69286536e4f49098226eda0c4c7f5
      https://github.com/llvm/llvm-project/commit/0e0ff8573de69286536e4f49098226eda0c4c7f5
  Author: Aleksandr Popov <a.popov.tmb at gmail.com>
  Date:   2023-09-06 (Wed, 06 Sep 2023)

  Changed paths:
    M llvm/lib/Transforms/Scalar/GuardWidening.cpp
    M llvm/test/Transforms/GuardWidening/range-check-merging.ll

  Log Message:
  -----------
  [GuardWidening] Refactor to work with the list of checks to widen/hoist

Currently we hoist conditions from widenable branch which are joined to
the widenable_condition by And operation. E.g if we have
br(WC && (c1 && c2)) we will operate with (c1 && c2) unsplitted.

This patch adds more flexibility to that mechanism by supporting work
with the list of checks parsed from the widenable branch.

On that stage patch doesn't change the logic of checks hoisting. In the
example above we will either hoist both checks [c1, c2] or none of them.
But in the future we would improve that logic analyzing each check
separately.

Reviewed By: anna

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




More information about the All-commits mailing list