[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / Other / loop-pass-printer.ll
blob10870cc57bc3cf6a07603b12c6d5363e8dbea511
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:     -loop-deletion -print-before=loop-deletion \
6 ; RUN:     | FileCheck %s -check-prefix=DEL
7 ; RUN: opt < %s 2>&1 -disable-output \
8 ; RUN:     -passes='loop(loop-deletion)' -print-before=loop-deletion \
9 ; RUN:     | FileCheck %s -check-prefix=DEL
10 ; RUN: opt -enable-new-pm=0 < %s 2>&1 -disable-output \
11 ; RUN:     -loop-unroll -print-after=loop-unroll -filter-print-funcs=bar \
12 ; RUN:     | FileCheck %s -check-prefix=BAR -check-prefix=BAR-OLD
13 ; RUN: opt < %s 2>&1 -disable-output \
14 ; RUN:     -passes='require<opt-remark-emit>,loop(loop-unroll-full)' -print-after=loop-unroll-full -filter-print-funcs=bar \
15 ; RUN:     | FileCheck %s -check-prefix=BAR
16 ; RUN: opt -enable-new-pm=0 < %s 2>&1 -disable-output \
17 ; RUN:     -loop-unroll -print-after=loop-unroll -filter-print-funcs=foo -print-module-scope \
18 ; RUN:     | FileCheck %s -check-prefix=FOO-MODULE -check-prefix=FOO-MODULE-OLD
19 ; RUN: opt < %s 2>&1 -disable-output \
20 ; RUN:     -passes='require<opt-remark-emit>,loop(loop-unroll-full)' -print-after=loop-unroll-full -filter-print-funcs=foo -print-module-scope \
21 ; RUN:     | FileCheck %s -check-prefix=FOO-MODULE
23 ; DEL:      IR Dump Before {{Delete dead loops|LoopDeletionPass}}
24 ; DEL:      ; Preheader:
25 ; DEL-NEXT:  %idx = alloca i32, align 4
26 ; DEL:      ; Loop:
27 ; DEL-NEXT:  loop:
28 ; DEL:       cont:
29 ; DEL:      ; Exit blocks
30 ; DEL:       done:
31 ; DEL:      IR Dump Before {{Delete dead loops|LoopDeletionPass}}
32 ; DEL:      ; Preheader:
33 ; DEL-NEXT:  br label %loop
34 ; DEL:      ; Loop:
35 ; DEL-NEXT:  loop:
36 ; DEL:      ; Exit blocks
37 ; DEL:       end:
39 ; BAR:      IR Dump After {{Unroll|LoopFullUnrollPass}}
40 ; BAR:      ; Preheader:
41 ; BAR-NEXT:  br label %loop
42 ; BAR:      ; Loop:
43 ; BAR-NEXT:  loop:
44 ; BAR:      ; Exit blocks
45 ; BAR:       end:
46 ; BAR-OLD-NOT: IR Dump
47 ; BAR-OLD-NOT:  ; Loop
49 ; FOO-MODULE: IR Dump After {{Unroll|LoopFullUnrollPass}} {{.*}}%loop
50 ; FOO-MODULE-NEXT: ModuleID =
51 ; FOO-MODULE: define void @foo
52 ; FOO-MODULE: define void @bar
53 ; FOO-MODULE-OLD-NOT: IR Dump
55 define void @foo(){
56   %idx = alloca i32, align 4
57   store i32 0, i32* %idx, align 4
58   br label %loop
60 loop:
61   %1 = load i32, i32* %idx, align 4
62   %2 = icmp slt i32 %1, 10
63   br i1 %2, label %cont, label %done
65 cont:
66   %3 = load i32, i32* %idx, align 4
67   %4 = add nsw i32 %3, 1
68   store i32 %4, i32* %idx, align 4
69   br label %loop
71 done:
72   ret void
75 define void @bar(){
76   br label %loop
77 loop:
78   br i1 1, label %loop, label %end
79 end:
80   ret void