xref: /llvm-project/llvm/test/Transforms/CodeExtractor/LoopExtractor_crash.ll (revision 217e85761cd1978931e29546e15716614e3b2fcc)
1*217e8576SNikita Popov; RUN: opt < %s -passes='cgscc(inline,loop-simplify),loop-extract' -S | FileCheck %s
2*217e8576SNikita Popov; RUN: opt < %s -passes='cgscc(argpromotion,loop-simplify),loop-extract' -S | FileCheck %s
33b70ee27SEhud Katz
43b70ee27SEhud Katz; This test used to trigger an assert (PR8929).
53b70ee27SEhud Katz
63b70ee27SEhud Katzdefine void @test() {
73b70ee27SEhud Katz; CHECK-LABEL: define void @test()
83b70ee27SEhud Katz; CHECK-NEXT:  entry:
93b70ee27SEhud Katz; CHECK-NEXT:    br label %codeRepl
103b70ee27SEhud Katz; CHECK:       codeRepl:
113b70ee27SEhud Katz; CHECK-NEXT:    call void @test.loopentry()
123b70ee27SEhud Katz; CHECK-NEXT:    br label %loopexit
133b70ee27SEhud Katz; CHECK:       loopexit:
143b70ee27SEhud Katz; CHECK-NEXT:    br label %exit
153b70ee27SEhud Katz; CHECK:       exit:
163b70ee27SEhud Katz; CHECK-NEXT:    ret void
173b70ee27SEhud Katz
183b70ee27SEhud Katzentry:
193b70ee27SEhud Katz  br label %loopentry
203b70ee27SEhud Katz
213b70ee27SEhud Katzloopentry:                                        ; preds = %loopbody, %entry
223b70ee27SEhud Katz  br i1 undef, label %loopbody, label %loopexit
233b70ee27SEhud Katz
243b70ee27SEhud Katzloopbody:                                         ; preds = %codeRepl1
253b70ee27SEhud Katz  call void @foo()
263b70ee27SEhud Katz  br label %loopentry
273b70ee27SEhud Katz
283b70ee27SEhud Katzloopexit:                                         ; preds = %codeRepl
293b70ee27SEhud Katz  br label %exit
303b70ee27SEhud Katz
313b70ee27SEhud Katzexit:                                             ; preds = %loopexit
323b70ee27SEhud Katz  ret void
333b70ee27SEhud Katz}
343b70ee27SEhud Katz
353b70ee27SEhud Katzdeclare void @foo()
363b70ee27SEhud Katz
373b70ee27SEhud Katz; CHECK-LABEL: define internal void @test.loopentry()
383b70ee27SEhud Katz; CHECK-NEXT:  newFuncRoot:
393b70ee27SEhud Katz; CHECK-NEXT:    br label %loopentry
403b70ee27SEhud Katz; CHECK:       loopentry:
413b70ee27SEhud Katz; CHECK-NEXT:    br i1 false, label %loopbody, label %loopexit.exitStub
423b70ee27SEhud Katz; CHECK:       loopbody:
433b70ee27SEhud Katz; CHECK-NEXT:    call void @foo()
443b70ee27SEhud Katz; CHECK-NEXT:    br label %loopentry
452e192ab1SVyacheslav Zakharin; CHECK:       loopexit.exitStub:
462e192ab1SVyacheslav Zakharin; CHECK-NEXT:    ret void
47