llvm-project

Форк
0
/
loop-pass-printer.ll 
69 строк · 1.9 Кб
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: 	   -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
13

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:
29

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:
37

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
42

43
define void @foo(){
44
  %idx = alloca i32, align 4
45
  store i32 0, ptr %idx, align 4
46
  br label %loop
47

48
loop:
49
  %1 = load i32, ptr %idx, align 4
50
  %2 = icmp slt i32 %1, 10
51
  br i1 %2, label %cont, label %done
52

53
cont:
54
  %3 = load i32, ptr %idx, align 4
55
  %4 = add nsw i32 %3, 1
56
  store i32 %4, ptr %idx, align 4
57
  br label %loop
58

59
done:
60
  ret void
61
}
62

63
define void @bar(){
64
  br label %loop
65
loop:
66
  br i1 1, label %loop, label %end
67
end:
68
  ret void
69
}
70

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.