[LSR] If no Use is interesting, early return.

Summary:
By looking at the callers of getUse(), we can see that even though
IVUsers may offer uses, but they may not be interesting to
LSR. It's possible that none of them is interesting.

Reviewers: sanjoy

Subscribers: jlebar, hiraditya, bixia, llvm-commits

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

llvm-svn: 337072
This commit is contained in:
Tim Shen 2018-07-13 23:40:00 +00:00
parent 94c4512a8c
commit 9e25d5d2ce
2 changed files with 44 additions and 1 deletions

View File

@ -5400,7 +5400,9 @@ LSRInstance::LSRInstance(Loop *L, IVUsers &IU, ScalarEvolution &SE,
CollectFixupsAndInitialFormulae();
CollectLoopInvariantFixupsAndFormulae();
assert(!Uses.empty() && "IVUsers reported at least one use");
if (Uses.empty())
return;
LLVM_DEBUG(dbgs() << "LSR found " << Uses.size() << " uses:\n";
print_uses(dbgs()));

View File

@ -0,0 +1,41 @@
; RUN: llc --start-before loop-reduce --stop-after loop-reduce %s -o - | FileCheck %s
target datalayout = "e-m:e-p:32:32-i64:64-n32-S128"
target triple = "x86_64-unknown-linux-gnu"
define void @hoge() {
bb:
%tmp = sext i32 undef to i64
%tmp3 = sub nsw i64 0, %tmp
br label %bb4
bb4: ; preds = %bb20, %bb
%tmp5 = getelementptr inbounds double, double* undef, i64 undef
%tmp6 = getelementptr inbounds double, double* %tmp5, i64 %tmp3
br label %bb7
bb7: ; preds = %bb7, %bb4
%tmp8 = phi double* [ %tmp10, %bb7 ], [ %tmp6, %bb4 ]
%tmp9 = load double, double* %tmp8
%tmp10 = getelementptr inbounds double, double* %tmp8, i64 1
br i1 true, label %bb11, label %bb7
bb11: ; preds = %bb7
br i1 undef, label %bb20, label %bb12
bb12: ; preds = %bb11
br label %bb13
bb13: ; preds = %bb13, %bb12
%tmp14 = phi double* [ %tmp18, %bb13 ], [ %tmp10, %bb12 ]
%tmp15 = load double, double* %tmp14, align 8
%tmp16 = getelementptr inbounds double, double* %tmp14, i64 1
%tmp17 = load double, double* %tmp16, align 8
%tmp18 = getelementptr inbounds double, double* %tmp14, i64 8
br i1 true, label %bb19, label %bb13
bb19: ; preds = %bb13
br label %bb20
bb20: ; preds = %bb19, %bb11
br label %bb4
}