1*518ec05aSArthur Eubanks; RUN: opt < %s -break-crit-edges -loop-simplify -loop-extract -S | FileCheck %s
23b70ee27SEhud Katz
33b70ee27SEhud Katz; This function is just a minimal wrapper around a loop and should not be extracted.
43b70ee27SEhud Katzdefine void @test() {
53b70ee27SEhud Katz; CHECK-LABEL: @test(
63b70ee27SEhud Katz; CHECK-NEXT:  entry:
73b70ee27SEhud Katz; CHECK-NEXT:    br label %loop
83b70ee27SEhud Katz; CHECK:       loop:
93b70ee27SEhud Katz; CHECK-NEXT:    %index = phi i32 [ 0, %entry ], [ %next, %loop.loop_crit_edge ]
103b70ee27SEhud Katz; CHECK-NEXT:    call void @foo()
113b70ee27SEhud Katz; CHECK-NEXT:    %next = add nsw i32 %index, -1
123b70ee27SEhud Katz; CHECK-NEXT:    %repeat = icmp sgt i32 %index, 1
133b70ee27SEhud Katz; CHECK-NEXT:    br i1 %repeat, label %loop.loop_crit_edge, label %exit
143b70ee27SEhud Katz; CHECK:       loop.loop_crit_edge:
153b70ee27SEhud Katz; CHECK-NEXT:    br label %loop
163b70ee27SEhud Katz; CHECK:       exit:
173b70ee27SEhud Katz; CHECK-NEXT:    ret void
183b70ee27SEhud Katz
193b70ee27SEhud Katzentry:
203b70ee27SEhud Katz  br label %loop
213b70ee27SEhud Katz
223b70ee27SEhud Katzloop:                                             ; preds = %loop, %entry
233b70ee27SEhud Katz  %index = phi i32 [ 0, %entry ], [ %next, %loop ]
243b70ee27SEhud Katz  call void @foo()
253b70ee27SEhud Katz  %next = add nsw i32 %index, -1
263b70ee27SEhud Katz  %repeat = icmp sgt i32 %index, 1
273b70ee27SEhud Katz  br i1 %repeat, label %loop, label %exit
283b70ee27SEhud Katz
293b70ee27SEhud Katzexit:                                             ; preds = %loop
303b70ee27SEhud Katz  ret void
313b70ee27SEhud Katz}
323b70ee27SEhud Katz
333b70ee27SEhud Katzdeclare void @foo()
343b70ee27SEhud Katz
353b70ee27SEhud Katz; CHECK-NOT: define
36