[docs] Add LICENSE.txt to the root of the mono-repo
[llvm-project.git] / llvm / test / Other / loop-pass-printer.ll
blob98ad72b142bca90178d6d8959b32ae9e7e8918fe
1 ; This test checks -print-after/before on loop passes
2 ; Besides of the loop itself it should be dumping loop pre-header and exits.
4 ; RUN: opt < %s 2>&1 -disable-output \
5 ; RUN:     -passes='loop(loop-deletion)' -print-before=loop-deletion \
6 ; RUN:     | FileCheck %s -check-prefix=DEL
7 ; RUN: opt < %s 2>&1 -disable-output \
8 ; RUN:     -passes='require<opt-remark-emit>,loop(loop-unroll-full)' -print-after=loop-unroll-full -filter-print-funcs=bar \
9 ; RUN:     | FileCheck %s -check-prefix=BAR
10 ; RUN: opt < %s 2>&1 -disable-output \
11 ; RUN:     -passes='require<opt-remark-emit>,loop(loop-unroll-full)' -print-after=loop-unroll-full -filter-print-funcs=foo -print-module-scope \
12 ; RUN:     | FileCheck %s -check-prefix=FOO-MODULE
14 ; DEL:      IR Dump Before {{Delete dead loops|LoopDeletionPass}}
15 ; DEL:      ; Preheader:
16 ; DEL-NEXT:  %idx = alloca i32, align 4
17 ; DEL:      ; Loop:
18 ; DEL-NEXT:  loop:
19 ; DEL:       cont:
20 ; DEL:      ; Exit blocks
21 ; DEL:       done:
22 ; DEL:      IR Dump Before {{Delete dead loops|LoopDeletionPass}}
23 ; DEL:      ; Preheader:
24 ; DEL-NEXT:  br label %loop
25 ; DEL:      ; Loop:
26 ; DEL-NEXT:  loop:
27 ; DEL:      ; Exit blocks
28 ; DEL:       end:
30 ; BAR:      IR Dump After {{Unroll|LoopFullUnrollPass}}
31 ; BAR:      ; Preheader:
32 ; BAR-NEXT:  br label %loop
33 ; BAR:      ; Loop:
34 ; BAR-NEXT:  loop:
35 ; BAR:      ; Exit blocks
36 ; BAR:       end:
38 ; FOO-MODULE: IR Dump After {{Unroll|LoopFullUnrollPass}} {{.*}}%loop
39 ; FOO-MODULE-NEXT: ModuleID =
40 ; FOO-MODULE: define void @foo
41 ; FOO-MODULE: define void @bar
43 define void @foo(){
44   %idx = alloca i32, align 4
45   store i32 0, i32* %idx, align 4
46   br label %loop
48 loop:
49   %1 = load i32, i32* %idx, align 4
50   %2 = icmp slt i32 %1, 10
51   br i1 %2, label %cont, label %done
53 cont:
54   %3 = load i32, i32* %idx, align 4
55   %4 = add nsw i32 %3, 1
56   store i32 %4, i32* %idx, align 4
57   br label %loop
59 done:
60   ret void
63 define void @bar(){
64   br label %loop
65 loop:
66   br i1 1, label %loop, label %end
67 end:
68   ret void