[all-commits] [llvm/llvm-project] e44f4a: [LoopFusion] Move instructions from FC1.GuardBlock...

whitneywhtsang via All-commits all-commits at lists.llvm.org
Thu Jan 30 10:02:37 PST 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: e44f4a8a54141d5f527ed8ee05362cc98031d723
      https://github.com/llvm/llvm-project/commit/e44f4a8a54141d5f527ed8ee05362cc98031d723
  Author: Whitney Tsang <whitneyt at ca.ibm.com>
  Date:   2020-01-30 (Thu, 30 Jan 2020)

  Changed paths:
    M llvm/lib/Transforms/Scalar/LoopFuse.cpp
    M llvm/test/Transforms/LoopFusion/diagnostics_missed.ll
    M llvm/test/Transforms/LoopFusion/guarded.ll

  Log Message:
  -----------
  [LoopFusion] Move instructions from FC1.GuardBlock to FC0.GuardBlock and
from FC0.ExitBlock to FC1.ExitBlock when proven safe.

Summary:
Currently LoopFusion give up when the second loop nest guard
block or the first loop nest exit block is not empty. For example:

if (0 < N) {
  for (int i = 0; i < N; ++i) {}
  x+=1;
}
y+=1;
if (0 < N) {
  for (int i = 0; i < N; ++i) {}
}
The above example should be safe to fuse.
This PR moves instructions in FC1 guard block (e.g. y+=1;) to
FC0 guard block, or instructions in FC0 exit block (e.g. x+=1;) to
FC1 exit block, which then LoopFusion is able to fuse them.
Reviewer: kbarton, jdoerfert, Meinersbur, dmgreen, fhahn, hfinkel,
bmahjour, etiotto
Reviewed By: jdoerfert
Subscribers: hiraditya, llvm-commits
Tag: LLVM
Differential Revision: https://reviews.llvm.org/D73641




More information about the All-commits mailing list