forked from OSchip/llvm-project
Fix an infinite loop in the loop-vectorizer.
PR14134. llvm-svn: 166379
This commit is contained in:
parent
9fb49d2b30
commit
e5dc57d4fb
|
@ -1175,6 +1175,12 @@ bool LoopVectorizationLegality::AddReductionVar(PHINode *Phi,
|
|||
bool FoundInBlockUser = false;
|
||||
// Did we reach the initial PHI node ?
|
||||
bool FoundStartPHI = false;
|
||||
|
||||
// If the instruction has no users then this is a broken
|
||||
// chain and can't be a reduction variable.
|
||||
if (Iter->use_begin() == Iter->use_end())
|
||||
return false;
|
||||
|
||||
// For each of the *users* of iter.
|
||||
for (Value::use_iterator it = Iter->use_begin(), e = Iter->use_end();
|
||||
it != e; ++it) {
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
; RUN: opt < %s -loop-vectorize -dce
|
||||
|
||||
; Check that we don't fall into an infinite loop.
|
||||
define void @test() nounwind {
|
||||
entry:
|
||||
br label %for.body
|
||||
|
||||
for.body:
|
||||
%0 = phi i32 [ 1, %entry ], [ 0, %for.body ]
|
||||
br label %for.body
|
||||
}
|
||||
|
Loading…
Reference in New Issue