[win/asan] GetInstructionSize: Fix `83 E4 XX` to return 3. (#119644)
[llvm-project.git] / llvm / test / Transforms / CodeExtractor / LoopExtractor_min_wrapper.ll
blob3f1bdaebda69788d0aef28fc17ddcbb2b959a176
1 ; RUN: opt < %s -passes='function(break-crit-edges,loop-simplify),loop-extract' -S | FileCheck %s
3 ; This function is just a minimal wrapper around a loop and should not be extracted.
4 define void @test() {
5 ; CHECK-LABEL: @test(
6 ; CHECK-NEXT:  entry:
7 ; CHECK-NEXT:    br label %loop
8 ; 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, -1
12 ; CHECK-NEXT:    %repeat = icmp sgt i32 %index, 1
13 ; CHECK-NEXT:    br i1 %repeat, label %loop.loop_crit_edge, label %exit
14 ; CHECK:       loop.loop_crit_edge:
15 ; CHECK-NEXT:    br label %loop
16 ; CHECK:       exit:
17 ; CHECK-NEXT:    ret void
19 entry:
20   br label %loop
22 loop:                                             ; preds = %loop, %entry
23   %index = phi i32 [ 0, %entry ], [ %next, %loop ]
24   call void @foo()
25   %next = add nsw i32 %index, -1
26   %repeat = icmp sgt i32 %index, 1
27   br i1 %repeat, label %loop, label %exit
29 exit:                                             ; preds = %loop
30   ret void
33 declare void @foo()
35 ; CHECK-NOT: define