Skip to content

Commit f7ba5a4

Browse files
committed
[DA] enable update_analyze_test_checks.py
Modify the DA pretty printer to match the output of other analysis passes. This enables update_analyze_test_checks.py to also work on DA tests. Auto generate all the Dependence Analysis tests.
1 parent a15fedc commit f7ba5a4

35 files changed

+2995
-1531
lines changed

llvm/lib/Analysis/DependenceAnalysis.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,8 @@ void DependenceAnalysisWrapperPass::print(raw_ostream &OS,
216216

217217
PreservedAnalyses
218218
DependenceAnalysisPrinterPass::run(Function &F, FunctionAnalysisManager &FAM) {
219-
OS << "'Dependence Analysis' for function '" << F.getName() << "':\n";
219+
OS << "Printing analysis 'Dependence Analysis' for function '" << F.getName()
220+
<< "':\n";
220221
dumpExampleDependence(OS, &FAM.getResult<DependenceAnalysis>(F),
221222
FAM.getResult<ScalarEvolutionAnalysis>(F),
222223
NormalizeResults);

llvm/test/Analysis/DependenceAnalysis/AA.ll

Lines changed: 79 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,99 +1,139 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 5
12
; RUN: opt < %s -disable-output "-passes=print<da>" \
23
; RUN: "-aa-pipeline=basic-aa,tbaa" 2>&1 | FileCheck %s
34

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!
85
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+
;
914
store i32 1, ptr %A
1015
store i32 2, ptr %B
1116
ret void
1217
}
1318

14-
; CHECK-LABEL: test_one_noalias
15-
; CHECK: da analyze - none!
16-
; CHECK: da analyze - none!
17-
; CHECK: da analyze - none!
1819
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+
;
1928
store i32 1, ptr %A
2029
store i32 2, ptr %B
2130
ret void
2231
}
2332

24-
; CHECK-LABEL: test_two_noalias
25-
; CHECK: da analyze - none!
26-
; CHECK: da analyze - none!
27-
; CHECK: da analyze - none!
2833
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+
;
2942
store i32 1, ptr %A
3043
store i32 2, ptr %B
3144
ret void
3245
}
3346

34-
; CHECK-LABEL: test_global_alias
35-
; CHECK: da analyze - none!
36-
; CHECK: da analyze - confused!
37-
; CHECK: da analyze - none!
3847
@g = global i32 5
3948
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+
;
4057
store i32 1, ptr %A
4158
store i32 2, ptr @g
4259
ret void
4360
}
4461

45-
; CHECK-LABEL: test_global_noalias
46-
; CHECK: da analyze - none!
47-
; CHECK: da analyze - none!
48-
; CHECK: da analyze - none!
4962
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+
;
5071
store i32 1, ptr %A
5172
store i32 2, ptr @g
5273
ret void
5374
}
5475

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!
6276

6377
@a = global i16 5, align 2
6478
@b = global ptr @a, align 4
6579
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+
;
6694
%l0 = load ptr, ptr @b, align 4
6795
%l1 = load i16, ptr %l0, align 2
6896
store i16 1, ptr @a, align 2
6997
ret void
7098
}
7199

72-
; CHECK-LABEL: test_tbaa_same
73-
; CHECK: da analyze - none!
74-
; CHECK: da analyze - confused!
75-
; CHECK: da analyze - none!
76100
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+
;
77109
store i32 1, ptr %A, !tbaa !5
78110
store i32 2, ptr %B, !tbaa !5
79111
ret void
80112
}
81113

82-
; CHECK-LABEL: test_tbaa_diff
83-
; CHECK: da analyze - none!
84-
; CHECK: da analyze - none!
85-
; CHECK: da analyze - none!
86114
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+
;
87123
store i32 1, ptr %A, !tbaa !5
88124
store i16 2, ptr %B, !tbaa !9
89125
ret void
90126
}
91127

92-
; CHECK-LABEL: tbaa_loop
93-
; CHECK: da analyze - input
94-
; CHECK: da analyze - none
95-
; CHECK: da analyze - output
96128
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+
;
97137
entry:
98138
%cmp = icmp ne i32 %J, 0
99139
%cmp122 = icmp ne i32 %I, 0

0 commit comments

Comments
 (0)