36 lines · plain
1; RUN: opt < %s -passes='function(break-crit-edges,loop-simplify),loop-extract' -S | FileCheck %s2 3; This function is just a minimal wrapper around a loop and should not be extracted.4define void @test() {5; CHECK-LABEL: @test(6; CHECK-NEXT: entry:7; CHECK-NEXT: br label %loop8; CHECK: loop:9; CHECK-NEXT: %index = phi i32 [ 0, %entry ], [ %next, %loop.loop_crit_edge ]10; CHECK-NEXT: call void @foo()11; CHECK-NEXT: %next = add nsw i32 %index, -112; CHECK-NEXT: %repeat = icmp sgt i32 %index, 113; CHECK-NEXT: br i1 %repeat, label %loop.loop_crit_edge, label %exit14; CHECK: loop.loop_crit_edge:15; CHECK-NEXT: br label %loop16; CHECK: exit:17; CHECK-NEXT: ret void18 19entry:20 br label %loop21 22loop: ; preds = %loop, %entry23 %index = phi i32 [ 0, %entry ], [ %next, %loop ]24 call void @foo()25 %next = add nsw i32 %index, -126 %repeat = icmp sgt i32 %index, 127 br i1 %repeat, label %loop, label %exit28 29exit: ; preds = %loop30 ret void31}32 33declare void @foo()34 35; CHECK-NOT: define36