• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
3;
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: 	   -loop-unroll -print-after=loop-unroll -filter-print-funcs=bar \
9; RUN:	   | FileCheck %s -check-prefix=BAR
10; RUN: opt < %s 2>&1 -disable-output \
11; RUN: 	   -loop-unroll -print-after=loop-unroll -filter-print-funcs=foo -print-module-scope \
12; RUN:	   | FileCheck %s -check-prefix=FOO-MODULE
13
14; DEL:	    IR Dump Before
15; DEL-SAME: dead loops
16; DEL: 	    ; Preheader:
17; DEL-NEXT:  %idx = alloca i32, align 4
18; DEL:      ; Loop:
19; DEL-NEXT:  loop:
20; DEL:	     cont:
21; DEL:	    ; Exit blocks
22; DEL:	     done:
23; DEL:	    IR Dump Before
24; DEL-SAME: dead loops
25; DEL: 	    ; Preheader:
26; DEL-NEXT:  br label %loop
27; DEL:      ; Loop:
28; DEL-NEXT:  loop:
29; DEL:	    ; Exit blocks
30; DEL:	     end:
31
32; BAR:	    IR Dump After
33; BAR-SAME: Unroll
34; BAR: 	    ; Preheader:
35; BAR-NEXT:  br label %loop
36; BAR:      ; Loop:
37; BAR-NEXT:  loop:
38; BAR:	    ; Exit blocks
39; BAR:	     end:
40; BAR-NOT: IR Dump
41; BAR-NOT:  ; Loop
42
43; FOO-MODULE: IR Dump After
44; FOO-MODULE-SAME: Unroll
45; FOO-MODULE-SAME: loop: %loop
46; FOO-MODULE-NEXT: ModuleID =
47; FOO-MODULE: define void @foo
48; FOO-MODULE: define void @bar
49; FOO-MODULE-NOT: IR Dump
50
51define void @foo(){
52  %idx = alloca i32, align 4
53  store i32 0, i32* %idx, align 4
54  br label %loop
55
56loop:
57  %1 = load i32, i32* %idx, align 4
58  %2 = icmp slt i32 %1, 10
59  br i1 %2, label %cont, label %done
60
61cont:
62  %3 = load i32, i32* %idx, align 4
63  %4 = add nsw i32 %3, 1
64  store i32 %4, i32* %idx, align 4
65  br label %loop
66
67done:
68  ret void
69}
70
71define void @bar(){
72  br label %loop
73loop:
74  br i1 1, label %loop, label %end
75end:
76  ret void
77}
78