]> granicus.if.org Git - llvm/commit
Compute safety information in a much finer granularity.
authorXin Tong <trent.xin.tong@gmail.com>
Mon, 24 Apr 2017 17:12:22 +0000 (17:12 +0000)
committerXin Tong <trent.xin.tong@gmail.com>
Mon, 24 Apr 2017 17:12:22 +0000 (17:12 +0000)
commitfa273182f487c6f457589da730efced2a5922dcc
tree2f9d829a165f103062da7b0159d6df6ab29f294b
parent7b717b6e4369dd596a2cedb3db82f0d3820188a9
Compute safety information in a much finer granularity.

Summary:
Instead of keeping a variable indicating whether there are early exits
in the loop.  We keep all the early exits. This improves LICM's ability to
move instructions out of the loop based on is-guaranteed-to-execute.

I am going to update compilation time as well soon.

Reviewers: hfinkel, sanjoy, efriedma, mkuper

Reviewed By: hfinkel

Subscribers: llvm-commits, mzolotukhin

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301196 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Transforms/Utils/LoopUtils.h
lib/Transforms/Scalar/LICM.cpp
lib/Transforms/Scalar/LoopIdiomRecognize.cpp
lib/Transforms/Utils/LoopUtils.cpp
test/Transforms/LICM/loop-early-exits.ll [new file with mode: 0644]
test/Transforms/LICM/preheader-safe.ll