mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-21 16:31:16 +00:00
c671375e8e
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
25 lines
555 B
LLVM
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
|
|
}
|