blob: 05b56a07e44b3d325dc41ea2cff39630e6c832d7 [file] [log] [blame]
Chandler Carruth5da53432012-07-02 18:37:59 +00001; RUN: opt -basicaa -aa-eval -print-all-alias-modref-info -disable-output < %s 2>&1 | FileCheck %s
Dan Gohman84f90a32010-07-01 20:08:40 +00002
3declare void @callee(double* %callee_arg)
4declare void @nocap_callee(double* nocapture %nocap_callee_arg)
5
6declare double* @normal_returner()
7declare noalias double* @noalias_returner()
8
9define void @caller_a(double* %arg_a0,
10 double* %arg_a1,
11 double* noalias %noalias_arg_a0,
12 double* noalias %noalias_arg_a1,
13 double** %indirect_a0,
14 double** %indirect_a1) {
Dan Gohman84f90a32010-07-01 20:08:40 +000015 %escape_alloca_a0 = alloca double
16 %escape_alloca_a1 = alloca double
17 %noescape_alloca_a0 = alloca double
18 %noescape_alloca_a1 = alloca double
19
20 %normal_ret_a0 = call double* @normal_returner()
21 %normal_ret_a1 = call double* @normal_returner()
22 %noalias_ret_a0 = call double* @noalias_returner()
23 %noalias_ret_a1 = call double* @noalias_returner()
24
David Blaikiea79ac142015-02-27 21:17:42 +000025 %loaded_a0 = load double*, double** %indirect_a0
26 %loaded_a1 = load double*, double** %indirect_a1
Rafael Espindola71616612011-07-09 23:53:58 +000027
Dan Gohman84f90a32010-07-01 20:08:40 +000028 call void @callee(double* %escape_alloca_a0)
29 call void @callee(double* %escape_alloca_a1)
30 call void @nocap_callee(double* %noescape_alloca_a0)
31 call void @nocap_callee(double* %noescape_alloca_a1)
32
33 store double 0.0, double* %loaded_a0
34 store double 0.0, double* %loaded_a1
35 store double 0.0, double* %arg_a0
36 store double 0.0, double* %arg_a1
37 store double 0.0, double* %noalias_arg_a0
38 store double 0.0, double* %noalias_arg_a1
39 store double 0.0, double* %escape_alloca_a0
40 store double 0.0, double* %escape_alloca_a1
41 store double 0.0, double* %noescape_alloca_a0
42 store double 0.0, double* %noescape_alloca_a1
43 store double 0.0, double* %normal_ret_a0
44 store double 0.0, double* %normal_ret_a1
45 store double 0.0, double* %noalias_ret_a0
46 store double 0.0, double* %noalias_ret_a1
47 ret void
48}
49
Dan Gohman00ef9322010-07-07 14:27:09 +000050; CHECK: Function: caller_a: 16 pointers, 8 call sites
Rafael Espindola7fbab4dc2011-07-09 22:56:50 +000051; CHECK-NEXT: MayAlias: double* %arg_a0, double* %arg_a1
52; CHECK-NEXT: NoAlias: double* %arg_a0, double* %noalias_arg_a0
53; CHECK-NEXT: NoAlias: double* %arg_a1, double* %noalias_arg_a0
54; CHECK-NEXT: NoAlias: double* %arg_a0, double* %noalias_arg_a1
55; CHECK-NEXT: NoAlias: double* %arg_a1, double* %noalias_arg_a1
56; CHECK-NEXT: NoAlias: double* %noalias_arg_a0, double* %noalias_arg_a1
57; CHECK-NEXT: MayAlias: double* %arg_a0, double** %indirect_a0
58; CHECK-NEXT: MayAlias: double* %arg_a1, double** %indirect_a0
59; CHECK-NEXT: NoAlias: double* %noalias_arg_a0, double** %indirect_a0
60; CHECK-NEXT: NoAlias: double* %noalias_arg_a1, double** %indirect_a0
61; CHECK-NEXT: MayAlias: double* %arg_a0, double** %indirect_a1
62; CHECK-NEXT: MayAlias: double* %arg_a1, double** %indirect_a1
63; CHECK-NEXT: NoAlias: double* %noalias_arg_a0, double** %indirect_a1
64; CHECK-NEXT: NoAlias: double* %noalias_arg_a1, double** %indirect_a1
65; CHECK-NEXT: MayAlias: double** %indirect_a0, double** %indirect_a1
Rafael Espindola7fbab4dc2011-07-09 22:56:50 +000066; CHECK-NEXT: NoAlias: double* %arg_a0, double* %escape_alloca_a0
67; CHECK-NEXT: NoAlias: double* %arg_a1, double* %escape_alloca_a0
68; CHECK-NEXT: NoAlias: double* %escape_alloca_a0, double* %noalias_arg_a0
69; CHECK-NEXT: NoAlias: double* %escape_alloca_a0, double* %noalias_arg_a1
70; CHECK-NEXT: NoAlias: double* %escape_alloca_a0, double** %indirect_a0
71; CHECK-NEXT: NoAlias: double* %escape_alloca_a0, double** %indirect_a1
Rafael Espindola7fbab4dc2011-07-09 22:56:50 +000072; CHECK-NEXT: NoAlias: double* %arg_a0, double* %escape_alloca_a1
73; CHECK-NEXT: NoAlias: double* %arg_a1, double* %escape_alloca_a1
74; CHECK-NEXT: NoAlias: double* %escape_alloca_a1, double* %noalias_arg_a0
75; CHECK-NEXT: NoAlias: double* %escape_alloca_a1, double* %noalias_arg_a1
76; CHECK-NEXT: NoAlias: double* %escape_alloca_a1, double** %indirect_a0
77; CHECK-NEXT: NoAlias: double* %escape_alloca_a1, double** %indirect_a1
Rafael Espindola7fbab4dc2011-07-09 22:56:50 +000078; CHECK-NEXT: NoAlias: double* %escape_alloca_a0, double* %escape_alloca_a1
79; CHECK-NEXT: NoAlias: double* %arg_a0, double* %noescape_alloca_a0
80; CHECK-NEXT: NoAlias: double* %arg_a1, double* %noescape_alloca_a0
81; CHECK-NEXT: NoAlias: double* %noalias_arg_a0, double* %noescape_alloca_a0
82; CHECK-NEXT: NoAlias: double* %noalias_arg_a1, double* %noescape_alloca_a0
83; CHECK-NEXT: NoAlias: double* %noescape_alloca_a0, double** %indirect_a0
84; CHECK-NEXT: NoAlias: double* %noescape_alloca_a0, double** %indirect_a1
Rafael Espindola7fbab4dc2011-07-09 22:56:50 +000085; CHECK-NEXT: NoAlias: double* %escape_alloca_a0, double* %noescape_alloca_a0
86; CHECK-NEXT: NoAlias: double* %escape_alloca_a1, double* %noescape_alloca_a0
87; CHECK-NEXT: NoAlias: double* %arg_a0, double* %noescape_alloca_a1
88; CHECK-NEXT: NoAlias: double* %arg_a1, double* %noescape_alloca_a1
89; CHECK-NEXT: NoAlias: double* %noalias_arg_a0, double* %noescape_alloca_a1
90; CHECK-NEXT: NoAlias: double* %noalias_arg_a1, double* %noescape_alloca_a1
91; CHECK-NEXT: NoAlias: double* %noescape_alloca_a1, double** %indirect_a0
92; CHECK-NEXT: NoAlias: double* %noescape_alloca_a1, double** %indirect_a1
Rafael Espindola7fbab4dc2011-07-09 22:56:50 +000093; CHECK-NEXT: NoAlias: double* %escape_alloca_a0, double* %noescape_alloca_a1
94; CHECK-NEXT: NoAlias: double* %escape_alloca_a1, double* %noescape_alloca_a1
95; CHECK-NEXT: NoAlias: double* %noescape_alloca_a0, double* %noescape_alloca_a1
96; CHECK-NEXT: MayAlias: double* %arg_a0, double* %normal_ret_a0
97; CHECK-NEXT: MayAlias: double* %arg_a1, double* %normal_ret_a0
98; CHECK-NEXT: NoAlias: double* %noalias_arg_a0, double* %normal_ret_a0
99; CHECK-NEXT: NoAlias: double* %noalias_arg_a1, double* %normal_ret_a0
100; CHECK-NEXT: MayAlias: double* %normal_ret_a0, double** %indirect_a0
101; CHECK-NEXT: MayAlias: double* %normal_ret_a0, double** %indirect_a1
Rafael Espindola7fbab4dc2011-07-09 22:56:50 +0000102; CHECK-NEXT: MayAlias: double* %escape_alloca_a0, double* %normal_ret_a0
103; CHECK-NEXT: MayAlias: double* %escape_alloca_a1, double* %normal_ret_a0
104; CHECK-NEXT: NoAlias: double* %noescape_alloca_a0, double* %normal_ret_a0
105; CHECK-NEXT: NoAlias: double* %noescape_alloca_a1, double* %normal_ret_a0
106; CHECK-NEXT: MayAlias: double* %arg_a0, double* %normal_ret_a1
107; CHECK-NEXT: MayAlias: double* %arg_a1, double* %normal_ret_a1
108; CHECK-NEXT: NoAlias: double* %noalias_arg_a0, double* %normal_ret_a1
109; CHECK-NEXT: NoAlias: double* %noalias_arg_a1, double* %normal_ret_a1
110; CHECK-NEXT: MayAlias: double* %normal_ret_a1, double** %indirect_a0
111; CHECK-NEXT: MayAlias: double* %normal_ret_a1, double** %indirect_a1
Rafael Espindola7fbab4dc2011-07-09 22:56:50 +0000112; CHECK-NEXT: MayAlias: double* %escape_alloca_a0, double* %normal_ret_a1
113; CHECK-NEXT: MayAlias: double* %escape_alloca_a1, double* %normal_ret_a1
114; CHECK-NEXT: NoAlias: double* %noescape_alloca_a0, double* %normal_ret_a1
115; CHECK-NEXT: NoAlias: double* %noescape_alloca_a1, double* %normal_ret_a1
116; CHECK-NEXT: MayAlias: double* %normal_ret_a0, double* %normal_ret_a1
117; CHECK-NEXT: NoAlias: double* %arg_a0, double* %noalias_ret_a0
118; CHECK-NEXT: NoAlias: double* %arg_a1, double* %noalias_ret_a0
119; CHECK-NEXT: NoAlias: double* %noalias_arg_a0, double* %noalias_ret_a0
120; CHECK-NEXT: NoAlias: double* %noalias_arg_a1, double* %noalias_ret_a0
121; CHECK-NEXT: NoAlias: double* %noalias_ret_a0, double** %indirect_a0
122; CHECK-NEXT: NoAlias: double* %noalias_ret_a0, double** %indirect_a1
Rafael Espindola7fbab4dc2011-07-09 22:56:50 +0000123; CHECK-NEXT: NoAlias: double* %escape_alloca_a0, double* %noalias_ret_a0
124; CHECK-NEXT: NoAlias: double* %escape_alloca_a1, double* %noalias_ret_a0
125; CHECK-NEXT: NoAlias: double* %noalias_ret_a0, double* %noescape_alloca_a0
126; CHECK-NEXT: NoAlias: double* %noalias_ret_a0, double* %noescape_alloca_a1
127; CHECK-NEXT: NoAlias: double* %noalias_ret_a0, double* %normal_ret_a0
128; CHECK-NEXT: NoAlias: double* %noalias_ret_a0, double* %normal_ret_a1
129; CHECK-NEXT: NoAlias: double* %arg_a0, double* %noalias_ret_a1
130; CHECK-NEXT: NoAlias: double* %arg_a1, double* %noalias_ret_a1
131; CHECK-NEXT: NoAlias: double* %noalias_arg_a0, double* %noalias_ret_a1
132; CHECK-NEXT: NoAlias: double* %noalias_arg_a1, double* %noalias_ret_a1
133; CHECK-NEXT: NoAlias: double* %noalias_ret_a1, double** %indirect_a0
134; CHECK-NEXT: NoAlias: double* %noalias_ret_a1, double** %indirect_a1
Rafael Espindola7fbab4dc2011-07-09 22:56:50 +0000135; CHECK-NEXT: NoAlias: double* %escape_alloca_a0, double* %noalias_ret_a1
136; CHECK-NEXT: NoAlias: double* %escape_alloca_a1, double* %noalias_ret_a1
137; CHECK-NEXT: NoAlias: double* %noalias_ret_a1, double* %noescape_alloca_a0
138; CHECK-NEXT: NoAlias: double* %noalias_ret_a1, double* %noescape_alloca_a1
139; CHECK-NEXT: NoAlias: double* %noalias_ret_a1, double* %normal_ret_a0
140; CHECK-NEXT: NoAlias: double* %noalias_ret_a1, double* %normal_ret_a1
141; CHECK-NEXT: NoAlias: double* %noalias_ret_a0, double* %noalias_ret_a1
Rafael Espindola71616612011-07-09 23:53:58 +0000142; CHECK-NEXT: MayAlias: double* %arg_a0, double* %loaded_a0
143; CHECK-NEXT: MayAlias: double* %arg_a1, double* %loaded_a0
144; CHECK-NEXT: NoAlias: double* %loaded_a0, double* %noalias_arg_a0
145; CHECK-NEXT: NoAlias: double* %loaded_a0, double* %noalias_arg_a1
146; CHECK-NEXT: MayAlias: double* %loaded_a0, double** %indirect_a0
147; CHECK-NEXT: MayAlias: double* %loaded_a0, double** %indirect_a1
148; CHECK-NEXT: MayAlias: double* %escape_alloca_a0, double* %loaded_a0
149; CHECK-NEXT: MayAlias: double* %escape_alloca_a1, double* %loaded_a0
150; CHECK-NEXT: NoAlias: double* %loaded_a0, double* %noescape_alloca_a0
151; CHECK-NEXT: NoAlias: double* %loaded_a0, double* %noescape_alloca_a1
152; CHECK-NEXT: MayAlias: double* %loaded_a0, double* %normal_ret_a0
153; CHECK-NEXT: MayAlias: double* %loaded_a0, double* %normal_ret_a1
154; CHECK-NEXT: NoAlias: double* %loaded_a0, double* %noalias_ret_a0
155; CHECK-NEXT: NoAlias: double* %loaded_a0, double* %noalias_ret_a1
156; CHECK-NEXT: MayAlias: double* %arg_a0, double* %loaded_a1
157; CHECK-NEXT: MayAlias: double* %arg_a1, double* %loaded_a1
158; CHECK-NEXT: NoAlias: double* %loaded_a1, double* %noalias_arg_a0
159; CHECK-NEXT: NoAlias: double* %loaded_a1, double* %noalias_arg_a1
160; CHECK-NEXT: MayAlias: double* %loaded_a1, double** %indirect_a0
161; CHECK-NEXT: MayAlias: double* %loaded_a1, double** %indirect_a1
162; CHECK-NEXT: MayAlias: double* %escape_alloca_a0, double* %loaded_a1
163; CHECK-NEXT: MayAlias: double* %escape_alloca_a1, double* %loaded_a1
164; CHECK-NEXT: NoAlias: double* %loaded_a1, double* %noescape_alloca_a0
165; CHECK-NEXT: NoAlias: double* %loaded_a1, double* %noescape_alloca_a1
166; CHECK-NEXT: MayAlias: double* %loaded_a1, double* %normal_ret_a0
167; CHECK-NEXT: MayAlias: double* %loaded_a1, double* %normal_ret_a1
168; CHECK-NEXT: NoAlias: double* %loaded_a1, double* %noalias_ret_a0
169; CHECK-NEXT: NoAlias: double* %loaded_a1, double* %noalias_ret_a1
170; CHECK-NEXT: MayAlias: double* %loaded_a0, double* %loaded_a1
Rafael Espindola7fbab4dc2011-07-09 22:56:50 +0000171; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a0 <-> %normal_ret_a0 = call double* @normal_returner()
172; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a1 <-> %normal_ret_a0 = call double* @normal_returner()
173; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a0 <-> %normal_ret_a0 = call double* @normal_returner()
174; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a1 <-> %normal_ret_a0 = call double* @normal_returner()
175; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a0 <-> %normal_ret_a0 = call double* @normal_returner()
176; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a1 <-> %normal_ret_a0 = call double* @normal_returner()
Rafael Espindola7fbab4dc2011-07-09 22:56:50 +0000177; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a0 <-> %normal_ret_a0 = call double* @normal_returner()
178; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a1 <-> %normal_ret_a0 = call double* @normal_returner()
179; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a0 <-> %normal_ret_a0 = call double* @normal_returner()
180; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a1 <-> %normal_ret_a0 = call double* @normal_returner()
181; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a0 <-> %normal_ret_a0 = call double* @normal_returner()
182; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a1 <-> %normal_ret_a0 = call double* @normal_returner()
183; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a0 <-> %normal_ret_a0 = call double* @normal_returner()
184; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a1 <-> %normal_ret_a0 = call double* @normal_returner()
Rafael Espindola71616612011-07-09 23:53:58 +0000185; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> %normal_ret_a0 = call double* @normal_returner()
186; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> %normal_ret_a0 = call double* @normal_returner()
Rafael Espindola7fbab4dc2011-07-09 22:56:50 +0000187; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a0 <-> %normal_ret_a1 = call double* @normal_returner()
188; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a1 <-> %normal_ret_a1 = call double* @normal_returner()
189; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a0 <-> %normal_ret_a1 = call double* @normal_returner()
190; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a1 <-> %normal_ret_a1 = call double* @normal_returner()
191; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a0 <-> %normal_ret_a1 = call double* @normal_returner()
192; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a1 <-> %normal_ret_a1 = call double* @normal_returner()
Rafael Espindola7fbab4dc2011-07-09 22:56:50 +0000193; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a0 <-> %normal_ret_a1 = call double* @normal_returner()
194; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a1 <-> %normal_ret_a1 = call double* @normal_returner()
195; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a0 <-> %normal_ret_a1 = call double* @normal_returner()
196; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a1 <-> %normal_ret_a1 = call double* @normal_returner()
197; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a0 <-> %normal_ret_a1 = call double* @normal_returner()
198; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a1 <-> %normal_ret_a1 = call double* @normal_returner()
199; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a0 <-> %normal_ret_a1 = call double* @normal_returner()
200; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a1 <-> %normal_ret_a1 = call double* @normal_returner()
Rafael Espindola71616612011-07-09 23:53:58 +0000201; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> %normal_ret_a1 = call double* @normal_returner()
202; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> %normal_ret_a1 = call double* @normal_returner()
Rafael Espindola7fbab4dc2011-07-09 22:56:50 +0000203; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a0 <-> %noalias_ret_a0 = call double* @noalias_returner()
204; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a1 <-> %noalias_ret_a0 = call double* @noalias_returner()
205; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a0 <-> %noalias_ret_a0 = call double* @noalias_returner()
206; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a1 <-> %noalias_ret_a0 = call double* @noalias_returner()
207; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a0 <-> %noalias_ret_a0 = call double* @noalias_returner()
208; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a1 <-> %noalias_ret_a0 = call double* @noalias_returner()
Rafael Espindola7fbab4dc2011-07-09 22:56:50 +0000209; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a0 <-> %noalias_ret_a0 = call double* @noalias_returner()
210; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a1 <-> %noalias_ret_a0 = call double* @noalias_returner()
211; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a0 <-> %noalias_ret_a0 = call double* @noalias_returner()
212; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a1 <-> %noalias_ret_a0 = call double* @noalias_returner()
213; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a0 <-> %noalias_ret_a0 = call double* @noalias_returner()
214; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a1 <-> %noalias_ret_a0 = call double* @noalias_returner()
215; CHECK-NEXT: Both ModRef: Ptr: double* %noalias_ret_a0 <-> %noalias_ret_a0 = call double* @noalias_returner()
216; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a1 <-> %noalias_ret_a0 = call double* @noalias_returner()
Rafael Espindola71616612011-07-09 23:53:58 +0000217; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> %noalias_ret_a0 = call double* @noalias_returner()
218; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> %noalias_ret_a0 = call double* @noalias_returner()
Rafael Espindola7fbab4dc2011-07-09 22:56:50 +0000219; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a0 <-> %noalias_ret_a1 = call double* @noalias_returner()
220; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a1 <-> %noalias_ret_a1 = call double* @noalias_returner()
221; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a0 <-> %noalias_ret_a1 = call double* @noalias_returner()
222; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a1 <-> %noalias_ret_a1 = call double* @noalias_returner()
223; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a0 <-> %noalias_ret_a1 = call double* @noalias_returner()
224; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a1 <-> %noalias_ret_a1 = call double* @noalias_returner()
Rafael Espindola7fbab4dc2011-07-09 22:56:50 +0000225; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a0 <-> %noalias_ret_a1 = call double* @noalias_returner()
226; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a1 <-> %noalias_ret_a1 = call double* @noalias_returner()
227; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a0 <-> %noalias_ret_a1 = call double* @noalias_returner()
228; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a1 <-> %noalias_ret_a1 = call double* @noalias_returner()
229; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a0 <-> %noalias_ret_a1 = call double* @noalias_returner()
230; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a1 <-> %noalias_ret_a1 = call double* @noalias_returner()
231; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a0 <-> %noalias_ret_a1 = call double* @noalias_returner()
232; CHECK-NEXT: Both ModRef: Ptr: double* %noalias_ret_a1 <-> %noalias_ret_a1 = call double* @noalias_returner()
Rafael Espindola71616612011-07-09 23:53:58 +0000233; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> %noalias_ret_a1 = call double* @noalias_returner()
234; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> %noalias_ret_a1 = call double* @noalias_returner()
Rafael Espindola7fbab4dc2011-07-09 22:56:50 +0000235; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a0 <-> call void @callee(double* %escape_alloca_a0)
236; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a1 <-> call void @callee(double* %escape_alloca_a0)
237; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a0 <-> call void @callee(double* %escape_alloca_a0)
238; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a1 <-> call void @callee(double* %escape_alloca_a0)
239; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a0 <-> call void @callee(double* %escape_alloca_a0)
240; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a1 <-> call void @callee(double* %escape_alloca_a0)
Rafael Espindola7fbab4dc2011-07-09 22:56:50 +0000241; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a0 <-> call void @callee(double* %escape_alloca_a0)
242; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a1 <-> call void @callee(double* %escape_alloca_a0)
243; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a0 <-> call void @callee(double* %escape_alloca_a0)
244; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a1 <-> call void @callee(double* %escape_alloca_a0)
245; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a0 <-> call void @callee(double* %escape_alloca_a0)
246; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a1 <-> call void @callee(double* %escape_alloca_a0)
247; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a0 <-> call void @callee(double* %escape_alloca_a0)
248; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a1 <-> call void @callee(double* %escape_alloca_a0)
Rafael Espindola71616612011-07-09 23:53:58 +0000249; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> call void @callee(double* %escape_alloca_a0)
250; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> call void @callee(double* %escape_alloca_a0)
Rafael Espindola7fbab4dc2011-07-09 22:56:50 +0000251; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a0 <-> call void @callee(double* %escape_alloca_a1)
252; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a1 <-> call void @callee(double* %escape_alloca_a1)
253; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a0 <-> call void @callee(double* %escape_alloca_a1)
254; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a1 <-> call void @callee(double* %escape_alloca_a1)
255; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a0 <-> call void @callee(double* %escape_alloca_a1)
256; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a1 <-> call void @callee(double* %escape_alloca_a1)
Rafael Espindola7fbab4dc2011-07-09 22:56:50 +0000257; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a0 <-> call void @callee(double* %escape_alloca_a1)
258; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a1 <-> call void @callee(double* %escape_alloca_a1)
259; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a0 <-> call void @callee(double* %escape_alloca_a1)
260; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a1 <-> call void @callee(double* %escape_alloca_a1)
261; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a0 <-> call void @callee(double* %escape_alloca_a1)
262; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a1 <-> call void @callee(double* %escape_alloca_a1)
263; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a0 <-> call void @callee(double* %escape_alloca_a1)
264; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a1 <-> call void @callee(double* %escape_alloca_a1)
Rafael Espindola71616612011-07-09 23:53:58 +0000265; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> call void @callee(double* %escape_alloca_a1)
266; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> call void @callee(double* %escape_alloca_a1)
Rafael Espindola7fbab4dc2011-07-09 22:56:50 +0000267; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a0 <-> call void @nocap_callee(double* %noescape_alloca_a0)
268; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a1 <-> call void @nocap_callee(double* %noescape_alloca_a0)
269; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a0 <-> call void @nocap_callee(double* %noescape_alloca_a0)
270; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a1 <-> call void @nocap_callee(double* %noescape_alloca_a0)
271; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a0 <-> call void @nocap_callee(double* %noescape_alloca_a0)
272; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a1 <-> call void @nocap_callee(double* %noescape_alloca_a0)
Rafael Espindola7fbab4dc2011-07-09 22:56:50 +0000273; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a0 <-> call void @nocap_callee(double* %noescape_alloca_a0)
274; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a1 <-> call void @nocap_callee(double* %noescape_alloca_a0)
275; CHECK-NEXT: Both ModRef: Ptr: double* %noescape_alloca_a0 <-> call void @nocap_callee(double* %noescape_alloca_a0)
276; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a1 <-> call void @nocap_callee(double* %noescape_alloca_a0)
277; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a0 <-> call void @nocap_callee(double* %noescape_alloca_a0)
278; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a1 <-> call void @nocap_callee(double* %noescape_alloca_a0)
279; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a0 <-> call void @nocap_callee(double* %noescape_alloca_a0)
280; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a1 <-> call void @nocap_callee(double* %noescape_alloca_a0)
Rafael Espindola71616612011-07-09 23:53:58 +0000281; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> call void @nocap_callee(double* %noescape_alloca_a0)
282; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> call void @nocap_callee(double* %noescape_alloca_a0)
Rafael Espindola7fbab4dc2011-07-09 22:56:50 +0000283; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a0 <-> call void @nocap_callee(double* %noescape_alloca_a1)
284; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a1 <-> call void @nocap_callee(double* %noescape_alloca_a1)
285; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a0 <-> call void @nocap_callee(double* %noescape_alloca_a1)
286; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a1 <-> call void @nocap_callee(double* %noescape_alloca_a1)
287; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a0 <-> call void @nocap_callee(double* %noescape_alloca_a1)
288; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a1 <-> call void @nocap_callee(double* %noescape_alloca_a1)
Rafael Espindola7fbab4dc2011-07-09 22:56:50 +0000289; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a0 <-> call void @nocap_callee(double* %noescape_alloca_a1)
290; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a1 <-> call void @nocap_callee(double* %noescape_alloca_a1)
291; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a0 <-> call void @nocap_callee(double* %noescape_alloca_a1)
292; CHECK-NEXT: Both ModRef: Ptr: double* %noescape_alloca_a1 <-> call void @nocap_callee(double* %noescape_alloca_a1)
293; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a0 <-> call void @nocap_callee(double* %noescape_alloca_a1)
294; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a1 <-> call void @nocap_callee(double* %noescape_alloca_a1)
295; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a0 <-> call void @nocap_callee(double* %noescape_alloca_a1)
296; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a1 <-> call void @nocap_callee(double* %noescape_alloca_a1)
Rafael Espindola71616612011-07-09 23:53:58 +0000297; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> call void @nocap_callee(double* %noescape_alloca_a1)
298; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> call void @nocap_callee(double* %noescape_alloca_a1)
Dan Gohman00ef9322010-07-07 14:27:09 +0000299; CHECK: ===== Alias Analysis Evaluator Report =====
Rafael Espindola7fbab4dc2011-07-09 22:56:50 +0000300; CHECK-NEXT: 120 Total Alias Queries Performed
301; CHECK-NEXT: 84 no alias responses (70.0%)
302; CHECK-NEXT: 36 may alias responses (30.0%)
303; CHECK-NEXT: 0 partial alias responses (0.0%)
304; CHECK-NEXT: 0 must alias responses (0.0%)
305; CHECK-NEXT: Alias Analysis Evaluator Pointer Alias Summary: 70%/30%/0%
306; CHECK-NEXT: 184 Total ModRef Queries Performed
307; CHECK-NEXT: 44 no mod/ref responses (23.9%)
308; CHECK-NEXT: 0 mod responses (0.0%)
309; CHECK-NEXT: 0 ref responses (0.0%)
310; CHECK-NEXT: 140 mod & ref responses (76.0%)
311; CHECK-NEXT: Alias Analysis Evaluator Mod/Ref Summary: 23%/0%/0%/76%