|
| 1 | +; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 5 |
1 | 2 | ; RUN: opt < %s -disable-output "-passes=print<da>" \
|
2 | 3 | ; RUN: "-aa-pipeline=basic-aa,tbaa" 2>&1 | FileCheck %s
|
3 | 4 |
|
4 |
| -; CHECK-LABEL: 'Dependence Analysis' for function 'test_no_noalias' |
5 |
| -; CHECK: da analyze - none! |
6 |
| -; CHECK: da analyze - confused! |
7 |
| -; CHECK: da analyze - none! |
8 | 5 | define void @test_no_noalias(ptr %A, ptr %B) {
|
| 6 | +; CHECK-LABEL: 'test_no_noalias' |
| 7 | +; CHECK-NEXT: Src: store i32 1, ptr %A, align 4 --> Dst: store i32 1, ptr %A, align 4 |
| 8 | +; CHECK-NEXT: da analyze - none! |
| 9 | +; CHECK-NEXT: Src: store i32 1, ptr %A, align 4 --> Dst: store i32 2, ptr %B, align 4 |
| 10 | +; CHECK-NEXT: da analyze - confused! |
| 11 | +; CHECK-NEXT: Src: store i32 2, ptr %B, align 4 --> Dst: store i32 2, ptr %B, align 4 |
| 12 | +; CHECK-NEXT: da analyze - none! |
| 13 | +; |
9 | 14 | store i32 1, ptr %A
|
10 | 15 | store i32 2, ptr %B
|
11 | 16 | ret void
|
12 | 17 | }
|
13 | 18 |
|
14 |
| -; CHECK-LABEL: test_one_noalias |
15 |
| -; CHECK: da analyze - none! |
16 |
| -; CHECK: da analyze - none! |
17 |
| -; CHECK: da analyze - none! |
18 | 19 | define void @test_one_noalias(ptr noalias %A, ptr %B) {
|
| 20 | +; CHECK-LABEL: 'test_one_noalias' |
| 21 | +; CHECK-NEXT: Src: store i32 1, ptr %A, align 4 --> Dst: store i32 1, ptr %A, align 4 |
| 22 | +; CHECK-NEXT: da analyze - none! |
| 23 | +; CHECK-NEXT: Src: store i32 1, ptr %A, align 4 --> Dst: store i32 2, ptr %B, align 4 |
| 24 | +; CHECK-NEXT: da analyze - none! |
| 25 | +; CHECK-NEXT: Src: store i32 2, ptr %B, align 4 --> Dst: store i32 2, ptr %B, align 4 |
| 26 | +; CHECK-NEXT: da analyze - none! |
| 27 | +; |
19 | 28 | store i32 1, ptr %A
|
20 | 29 | store i32 2, ptr %B
|
21 | 30 | ret void
|
22 | 31 | }
|
23 | 32 |
|
24 |
| -; CHECK-LABEL: test_two_noalias |
25 |
| -; CHECK: da analyze - none! |
26 |
| -; CHECK: da analyze - none! |
27 |
| -; CHECK: da analyze - none! |
28 | 33 | define void @test_two_noalias(ptr noalias %A, ptr noalias %B) {
|
| 34 | +; CHECK-LABEL: 'test_two_noalias' |
| 35 | +; CHECK-NEXT: Src: store i32 1, ptr %A, align 4 --> Dst: store i32 1, ptr %A, align 4 |
| 36 | +; CHECK-NEXT: da analyze - none! |
| 37 | +; CHECK-NEXT: Src: store i32 1, ptr %A, align 4 --> Dst: store i32 2, ptr %B, align 4 |
| 38 | +; CHECK-NEXT: da analyze - none! |
| 39 | +; CHECK-NEXT: Src: store i32 2, ptr %B, align 4 --> Dst: store i32 2, ptr %B, align 4 |
| 40 | +; CHECK-NEXT: da analyze - none! |
| 41 | +; |
29 | 42 | store i32 1, ptr %A
|
30 | 43 | store i32 2, ptr %B
|
31 | 44 | ret void
|
32 | 45 | }
|
33 | 46 |
|
34 |
| -; CHECK-LABEL: test_global_alias |
35 |
| -; CHECK: da analyze - none! |
36 |
| -; CHECK: da analyze - confused! |
37 |
| -; CHECK: da analyze - none! |
38 | 47 | @g = global i32 5
|
39 | 48 | define void @test_global_alias(ptr %A) {
|
| 49 | +; CHECK-LABEL: 'test_global_alias' |
| 50 | +; CHECK-NEXT: Src: store i32 1, ptr %A, align 4 --> Dst: store i32 1, ptr %A, align 4 |
| 51 | +; CHECK-NEXT: da analyze - none! |
| 52 | +; CHECK-NEXT: Src: store i32 1, ptr %A, align 4 --> Dst: store i32 2, ptr @g, align 4 |
| 53 | +; CHECK-NEXT: da analyze - confused! |
| 54 | +; CHECK-NEXT: Src: store i32 2, ptr @g, align 4 --> Dst: store i32 2, ptr @g, align 4 |
| 55 | +; CHECK-NEXT: da analyze - none! |
| 56 | +; |
40 | 57 | store i32 1, ptr %A
|
41 | 58 | store i32 2, ptr @g
|
42 | 59 | ret void
|
43 | 60 | }
|
44 | 61 |
|
45 |
| -; CHECK-LABEL: test_global_noalias |
46 |
| -; CHECK: da analyze - none! |
47 |
| -; CHECK: da analyze - none! |
48 |
| -; CHECK: da analyze - none! |
49 | 62 | define void @test_global_noalias(ptr noalias %A) {
|
| 63 | +; CHECK-LABEL: 'test_global_noalias' |
| 64 | +; CHECK-NEXT: Src: store i32 1, ptr %A, align 4 --> Dst: store i32 1, ptr %A, align 4 |
| 65 | +; CHECK-NEXT: da analyze - none! |
| 66 | +; CHECK-NEXT: Src: store i32 1, ptr %A, align 4 --> Dst: store i32 2, ptr @g, align 4 |
| 67 | +; CHECK-NEXT: da analyze - none! |
| 68 | +; CHECK-NEXT: Src: store i32 2, ptr @g, align 4 --> Dst: store i32 2, ptr @g, align 4 |
| 69 | +; CHECK-NEXT: da analyze - none! |
| 70 | +; |
50 | 71 | store i32 1, ptr %A
|
51 | 72 | store i32 2, ptr @g
|
52 | 73 | ret void
|
53 | 74 | }
|
54 | 75 |
|
55 |
| -; CHECK-LABEL: test_global_size |
56 |
| -; CHECK: da analyze - none! |
57 |
| -; CHECK: da analyze - confused! |
58 |
| -; CHECK: da analyze - none! |
59 |
| -; CHECK: da analyze - none! |
60 |
| -; CHECK: da analyze - confused! |
61 |
| -; CHECK: da analyze - none! |
62 | 76 |
|
63 | 77 | @a = global i16 5, align 2
|
64 | 78 | @b = global ptr @a, align 4
|
65 | 79 | define void @test_global_size() {
|
| 80 | +; CHECK-LABEL: 'test_global_size' |
| 81 | +; CHECK-NEXT: Src: %l0 = load ptr, ptr @b, align 4 --> Dst: %l0 = load ptr, ptr @b, align 4 |
| 82 | +; CHECK-NEXT: da analyze - none! |
| 83 | +; CHECK-NEXT: Src: %l0 = load ptr, ptr @b, align 4 --> Dst: %l1 = load i16, ptr %l0, align 2 |
| 84 | +; CHECK-NEXT: da analyze - confused! |
| 85 | +; CHECK-NEXT: Src: %l0 = load ptr, ptr @b, align 4 --> Dst: store i16 1, ptr @a, align 2 |
| 86 | +; CHECK-NEXT: da analyze - none! |
| 87 | +; CHECK-NEXT: Src: %l1 = load i16, ptr %l0, align 2 --> Dst: %l1 = load i16, ptr %l0, align 2 |
| 88 | +; CHECK-NEXT: da analyze - none! |
| 89 | +; CHECK-NEXT: Src: %l1 = load i16, ptr %l0, align 2 --> Dst: store i16 1, ptr @a, align 2 |
| 90 | +; CHECK-NEXT: da analyze - confused! |
| 91 | +; CHECK-NEXT: Src: store i16 1, ptr @a, align 2 --> Dst: store i16 1, ptr @a, align 2 |
| 92 | +; CHECK-NEXT: da analyze - none! |
| 93 | +; |
66 | 94 | %l0 = load ptr, ptr @b, align 4
|
67 | 95 | %l1 = load i16, ptr %l0, align 2
|
68 | 96 | store i16 1, ptr @a, align 2
|
69 | 97 | ret void
|
70 | 98 | }
|
71 | 99 |
|
72 |
| -; CHECK-LABEL: test_tbaa_same |
73 |
| -; CHECK: da analyze - none! |
74 |
| -; CHECK: da analyze - confused! |
75 |
| -; CHECK: da analyze - none! |
76 | 100 | define void @test_tbaa_same(ptr %A, ptr %B) {
|
| 101 | +; CHECK-LABEL: 'test_tbaa_same' |
| 102 | +; CHECK-NEXT: Src: store i32 1, ptr %A, align 4, !tbaa !0 --> Dst: store i32 1, ptr %A, align 4, !tbaa !0 |
| 103 | +; CHECK-NEXT: da analyze - none! |
| 104 | +; CHECK-NEXT: Src: store i32 1, ptr %A, align 4, !tbaa !0 --> Dst: store i32 2, ptr %B, align 4, !tbaa !0 |
| 105 | +; CHECK-NEXT: da analyze - confused! |
| 106 | +; CHECK-NEXT: Src: store i32 2, ptr %B, align 4, !tbaa !0 --> Dst: store i32 2, ptr %B, align 4, !tbaa !0 |
| 107 | +; CHECK-NEXT: da analyze - none! |
| 108 | +; |
77 | 109 | store i32 1, ptr %A, !tbaa !5
|
78 | 110 | store i32 2, ptr %B, !tbaa !5
|
79 | 111 | ret void
|
80 | 112 | }
|
81 | 113 |
|
82 |
| -; CHECK-LABEL: test_tbaa_diff |
83 |
| -; CHECK: da analyze - none! |
84 |
| -; CHECK: da analyze - none! |
85 |
| -; CHECK: da analyze - none! |
86 | 114 | define void @test_tbaa_diff(ptr %A, ptr %B) {
|
| 115 | +; CHECK-LABEL: 'test_tbaa_diff' |
| 116 | +; CHECK-NEXT: Src: store i32 1, ptr %A, align 4, !tbaa !0 --> Dst: store i32 1, ptr %A, align 4, !tbaa !0 |
| 117 | +; CHECK-NEXT: da analyze - none! |
| 118 | +; CHECK-NEXT: Src: store i32 1, ptr %A, align 4, !tbaa !0 --> Dst: store i16 2, ptr %B, align 2, !tbaa !4 |
| 119 | +; CHECK-NEXT: da analyze - none! |
| 120 | +; CHECK-NEXT: Src: store i16 2, ptr %B, align 2, !tbaa !4 --> Dst: store i16 2, ptr %B, align 2, !tbaa !4 |
| 121 | +; CHECK-NEXT: da analyze - none! |
| 122 | +; |
87 | 123 | store i32 1, ptr %A, !tbaa !5
|
88 | 124 | store i16 2, ptr %B, !tbaa !9
|
89 | 125 | ret void
|
90 | 126 | }
|
91 | 127 |
|
92 |
| -; CHECK-LABEL: tbaa_loop |
93 |
| -; CHECK: da analyze - input |
94 |
| -; CHECK: da analyze - none |
95 |
| -; CHECK: da analyze - output |
96 | 128 | define void @tbaa_loop(i32 %I, i32 %J, ptr nocapture %A, ptr nocapture readonly %B) {
|
| 129 | +; CHECK-LABEL: 'tbaa_loop' |
| 130 | +; CHECK-NEXT: Src: %0 = load i16, ptr %arrayidx.us, align 4, !tbaa !0 --> Dst: %0 = load i16, ptr %arrayidx.us, align 4, !tbaa !0 |
| 131 | +; CHECK-NEXT: da analyze - input [* *]! |
| 132 | +; CHECK-NEXT: Src: %0 = load i16, ptr %arrayidx.us, align 4, !tbaa !0 --> Dst: store i32 %add.us.lcssa, ptr %arrayidx6.us, align 4, !tbaa !4 |
| 133 | +; CHECK-NEXT: da analyze - none! |
| 134 | +; CHECK-NEXT: Src: store i32 %add.us.lcssa, ptr %arrayidx6.us, align 4, !tbaa !4 --> Dst: store i32 %add.us.lcssa, ptr %arrayidx6.us, align 4, !tbaa !4 |
| 135 | +; CHECK-NEXT: da analyze - output [*]! |
| 136 | +; |
97 | 137 | entry:
|
98 | 138 | %cmp = icmp ne i32 %J, 0
|
99 | 139 | %cmp122 = icmp ne i32 %I, 0
|
|
0 commit comments