1; RUN: opt < %s -passes='cgscc(inline,loop-simplify),loop-extract' -S | FileCheck %s 2; RUN: opt < %s -passes='cgscc(argpromotion,loop-simplify),loop-extract' -S | FileCheck %s 3 4; This test used to trigger an assert (PR8929). 5 6define void @test() { 7; CHECK-LABEL: define void @test() 8; CHECK-NEXT: entry: 9; CHECK-NEXT: br label %codeRepl 10; CHECK: codeRepl: 11; CHECK-NEXT: call void @test.loopentry() 12; CHECK-NEXT: br label %loopexit 13; CHECK: loopexit: 14; CHECK-NEXT: br label %exit 15; CHECK: exit: 16; CHECK-NEXT: ret void 17 18entry: 19 br label %loopentry 20 21loopentry: ; preds = %loopbody, %entry 22 br i1 undef, label %loopbody, label %loopexit 23 24loopbody: ; preds = %codeRepl1 25 call void @foo() 26 br label %loopentry 27 28loopexit: ; preds = %codeRepl 29 br label %exit 30 31exit: ; preds = %loopexit 32 ret void 33} 34 35declare void @foo() 36 37; CHECK-LABEL: define internal void @test.loopentry() 38; CHECK-NEXT: newFuncRoot: 39; CHECK-NEXT: br label %loopentry 40; CHECK: loopentry: 41; CHECK-NEXT: br i1 false, label %loopbody, label %loopexit.exitStub 42; CHECK: loopbody: 43; CHECK-NEXT: call void @foo() 44; CHECK-NEXT: br label %loopentry 45; CHECK: loopexit.exitStub: 46; CHECK-NEXT: ret void 47