llvm-6502/test/Transforms/InstCombine/pr12338.ll
David Majnemer c671375e8e InstCombine: Remove infinite loop caused by FoldOpIntoPhi
FoldOpIntoPhi could create an infinite loop if the PHI could potentially
reach a BB it was considering inserting instructions into.  The
instructions it would insert would eventually lead to other combines
firing which would, again, lead to FoldOpIntoPhi firing.

The solution is to handicap FoldOpIntoPhi so that it doesn't attempt to
insert instructions that the PHI might reach.

This fixes PR21377.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@221187 91177308-0d34-0410-b5e6-96231b3b80d8
2014-11-03 21:55:12 +00:00

25 lines
555 B
LLVM

; RUN: opt < %s -instcombine -S | FileCheck %s
define void @entry() nounwind {
entry:
br label %for.cond
for.cond:
%local = phi <1 x i32> [ <i32 0>, %entry ], [ %phi2, %cond.end47 ]
%phi3 = sub <1 x i32> zeroinitializer, %local
br label %cond.end
cond.false:
br label %cond.end
cond.end:
%cond = phi <1 x i32> [ %phi3, %for.cond ], [ undef, %cond.false ]
br label %cond.end47
cond.end47:
%sum = add <1 x i32> %cond, <i32 92>
; CHECK: sub <1 x i32> <i32 -92>, %cond
%phi2 = sub <1 x i32> zeroinitializer, %sum
br label %for.cond
}