1
1
// RUN: %clang_cc1 -fblocks -triple i386-apple-darwin9 -emit-llvm -o %t %s
2
- // RUN: grep 'define signext i8 @f0()' %t
3
- // RUN: grep 'define signext i16 @f1()' %t
4
- // RUN: grep 'define i32 @f2()' %t
5
- // RUN: grep 'define float @f3()' %t
6
- // RUN: grep 'define double @f4()' %t
7
- // RUN: grep 'define x86_fp80 @f5()' %t
8
- // RUN: grep 'define void @f6(i8 signext %a0, i16 signext %a1, i32 %a2, i64 %a3, i8\* %a4)' %t
9
- // RUN: grep 'define void @f7(i32 %a0)' %t
10
- // RUN: grep 'define i64 @f8_1()' %t
11
- // RUN: grep 'define void @f8_2(i32 %a0.0, i32 %a0.1)' %t
2
+ // RUN: FileCheck < %t %s
12
3
4
+ // CHECK: define signext i8 @f0()
13
5
char f0 (void ) {
14
6
return 0 ;
15
7
}
16
8
9
+ // CHECK: define signext i16 @f1()
17
10
short f1 (void ) {
18
11
return 0 ;
19
12
}
20
13
14
+ // CHECK: define i32 @f2()
21
15
int f2 (void ) {
22
16
return 0 ;
23
17
}
24
18
19
+ // CHECK: define float @f3()
25
20
float f3 (void ) {
26
21
return 0 ;
27
22
}
28
23
24
+ // CHECK: define double @f4()
29
25
double f4 (void ) {
30
26
return 0 ;
31
27
}
32
28
29
+ // CHECK: define x86_fp80 @f5()
33
30
long double f5 (void ) {
34
31
return 0 ;
35
32
}
36
33
34
+ // CHECK: define void @f6(i8 signext %a0, i16 signext %a1, i32 %a2, i64 %a3, i8* %a4)
37
35
void f6 (char a0 , short a1 , int a2 , long long a3 , void * a4 ) {}
38
36
39
- typedef enum { A , B , C } E ;
40
-
41
- void f7 (E a0 ) {}
37
+ // CHECK: define void @f7(i32 %a0)
38
+ typedef enum { A , B , C } e7 ;
39
+ void f7 (e7 a0 ) {}
42
40
41
+ // CHECK: define i64 @f8_1()
42
+ // CHECK: define void @f8_2(i32 %a0.0, i32 %a0.1)
43
43
struct s8 {
44
44
int a ;
45
45
int b ;
@@ -49,11 +49,11 @@ void f8_2(struct s8 a0) {}
49
49
50
50
// This should be passed just as s8.
51
51
52
- // RUN: grep ' define i64 @f9_1()' %t
52
+ // CHECK: define i64 @f9_1()
53
53
54
54
// FIXME: llvm-gcc expands this, this may have some value for the
55
55
// backend in terms of optimization but doesn't change the ABI.
56
- // RUN: grep ' define void @f9_2(%.truct.s9\ * byval %a0)' %t
56
+ // CHECK: define void @f9_2(%struct.s9 * byval %a0)
57
57
struct s9 {
58
58
int a : 17 ;
59
59
int b ;
@@ -63,20 +63,20 @@ void f9_2(struct s9 a0) {}
63
63
64
64
// Return of small structures and unions
65
65
66
- // RUN: grep ' float @f10()' %t
66
+ // CHECK: float @f10()
67
67
struct s10 {
68
68
union { };
69
69
float f ;
70
70
} f10 (void ) { while (1 ) {} }
71
71
72
72
// Small vectors and 1 x {i64,double} are returned in registers
73
73
74
- // RUN: grep ' i32 @f11()' %t
75
- // RUN: grep -F ' void @f12(<2 x i32>* sret %agg.result)' %t
76
- // RUN: grep ' i64 @f13()' %t
77
- // RUN: grep ' i64 @f14()' %t
78
- // RUN: grep ' <2 x i64> @f15()' %t
79
- // RUN: grep ' <2 x i64> @f16()' %t
74
+ // CHECK: i32 @f11()
75
+ // CHECK: void @f12(<2 x i32>* sret %agg.result)
76
+ // CHECK: i64 @f13()
77
+ // CHECK: i64 @f14()
78
+ // CHECK: <2 x i64> @f15()
79
+ // CHECK: <2 x i64> @f16()
80
80
typedef short T11 __attribute__ ((vector_size (4 )));
81
81
T11 f11 (void ) { while (1 ) {} }
82
82
typedef int T12 __attribute__ ((vector_size (8 )));
@@ -93,12 +93,12 @@ T16 f16(void) { while (1) {} }
93
93
// And when the single element in a struct (but not for 64 and
94
94
// 128-bits).
95
95
96
- // RUN: grep ' i32 @f17()' %t
97
- // RUN: grep -F ' void @f18(%2* sret %agg.result)' %t
98
- // RUN: grep -F ' void @f19(%3* sret %agg.result)' %t
99
- // RUN: grep -F ' void @f20(%4* sret %agg.result)' %t
100
- // RUN: grep -F ' void @f21(%5* sret %agg.result)' %t
101
- // RUN: grep -F ' void @f22(%6* sret %agg.result)' %t
96
+ // CHECK: i32 @f17()
97
+ // CHECK: void @f18(%2* sret %agg.result)
98
+ // CHECK: void @f19(%3* sret %agg.result)
99
+ // CHECK: void @f20(%4* sret %agg.result)
100
+ // CHECK: void @f21(%5* sret %agg.result)
101
+ // CHECK: void @f22(%6* sret %agg.result)
102
102
struct { T11 a ; } f17 (void ) { while (1 ) {} }
103
103
struct { T12 a ; } f18 (void ) { while (1 ) {} }
104
104
struct { T13 a ; } f19 (void ) { while (1 ) {} }
@@ -108,97 +108,97 @@ struct { T16 a; } f22(void) { while (1) {} }
108
108
109
109
// Single element structures are handled specially
110
110
111
- // RUN: grep -F ' float @f23()' %t
112
- // RUN: grep -F ' float @f24()' %t
113
- // RUN: grep -F ' float @f25()' %t
111
+ // CHECK: float @f23()
112
+ // CHECK: float @f24()
113
+ // CHECK: float @f25()
114
114
struct { float a ; } f23 (void ) { while (1 ) {} }
115
115
struct { float a [1 ]; } f24 (void ) { while (1 ) {} }
116
116
struct { struct {} a ; struct { float a [1 ]; } b ; } f25 (void ) { while (1 ) {} }
117
117
118
118
// Small structures are handled recursively
119
- // RUN: grep -F ' i32 @f26()' %t
120
- // RUN: grep ' void @f27(%.truct. s27\ * sret %agg.result)' %t
119
+ // CHECK: i32 @f26()
120
+ // CHECK: void @f27(%struct. s27* sret %agg.result)
121
121
struct s26 { struct { char a , b ; } a ; struct { char a , b ; } b ; } f26 (void ) { while (1 ) {} }
122
122
struct s27 { struct { char a , b , c ; } a ; struct { char a ; } b ; } f27 (void ) { while (1 ) {} }
123
123
124
- // RUN: grep ' void @f28(%.truct. s28\ * sret %agg.result)' %t
124
+ // CHECK: void @f28(%struct. s28* sret %agg.result)
125
125
struct s28 { int a ; int b []; } f28 (void ) { while (1 ) {} }
126
126
127
- // RUN: grep ' define i16 @f29()' %t
127
+ // CHECK: define i16 @f29()
128
128
struct s29 { struct { } a [1 ]; char b ; char c ; } f29 (void ) { while (1 ) {} }
129
129
130
- // RUN: grep ' define i16 @f30()' %t
130
+ // CHECK: define i16 @f30()
131
131
struct s30 { char a ; char b : 4 ; } f30 (void ) { while (1 ) {} }
132
132
133
- // RUN: grep ' define float @f31()' %t
133
+ // CHECK: define float @f31()
134
134
struct s31 { char : 0 ; float b ; char : 0 ; } f31 (void ) { while (1 ) {} }
135
135
136
- // RUN: grep ' define i32 @f32()' %t
136
+ // CHECK: define i32 @f32()
137
137
struct s32 { char a ; unsigned : 0 ; } f32 (void ) { while (1 ) {} }
138
138
139
- // RUN: grep ' define float @f33()' %t
139
+ // CHECK: define float @f33()
140
140
struct s33 { float a ; long long : 0 ; } f33 (void ) { while (1 ) {} }
141
141
142
- // RUN: grep ' define float @f34()' %t
142
+ // CHECK: define float @f34()
143
143
struct s34 { struct { int : 0 ; } a ; float b ; } f34 (void ) { while (1 ) {} }
144
144
145
- // RUN: grep ' define i16 @f35()' %t
145
+ // CHECK: define i16 @f35()
146
146
struct s35 { struct { int : 0 ; } a ; char b ; char c ; } f35 (void ) { while (1 ) {} }
147
147
148
- // RUN: grep ' define i16 @f36()' %t
148
+ // CHECK: define i16 @f36()
149
149
struct s36 { struct { int : 0 ; } a [2 ][10 ]; char b ; char c ; } f36 (void ) { while (1 ) {} }
150
150
151
- // RUN: grep ' define float @f37()' %t
151
+ // CHECK: define float @f37()
152
152
struct s37 { float c [1 ][1 ]; } f37 (void ) { while (1 ) {} }
153
153
154
- // RUN: grep ' define void @f38(. struct.s38. sret . agg.result)' %t
154
+ // CHECK: define void @f38(% struct.s38* sret % agg.result)
155
155
struct s38 { char a [3 ]; short b ; } f38 (void ) { while (1 ) {} }
156
156
157
- // RUN: grep ' define void @f39(. struct.s39. byval align 16 .x)' %t
157
+ // CHECK: define void @f39(% struct.s39* byval align 16 %x)
158
158
typedef int v39 __attribute((vector_size (16 )));
159
159
struct s39 { v39 x ; };
160
160
void f39 (struct s39 x ) {}
161
161
162
162
// <rdar://problem/7247671>
163
- // RUN: grep ' define i32 @f40()' %t
163
+ // CHECK: define i32 @f40()
164
164
enum e40 { ec0 = 0 };
165
165
enum e40 f40 (void ) { }
166
166
167
- // RUN: grep ' define void ()\ * @f41()' %t
167
+ // CHECK: define void ()* @f41()
168
168
typedef void (^vvbp )(void );
169
169
vvbp f41 (void ) { }
170
170
171
- // RUN: grep ' define i32 @f42()' %t
171
+ // CHECK: define i32 @f42()
172
172
struct s42 { enum e40 f0 ; } f42 (void ) { }
173
173
174
- // RUN: grep ' define i64 @f43()' %t
174
+ // CHECK: define i64 @f43()
175
175
struct s43 { enum e40 f0 ; int f1 ; } f43 (void ) { }
176
176
177
- // RUN: grep ' define i32 @f44()' %t
177
+ // CHECK: define i32 @f44()
178
178
struct s44 { vvbp f0 ; } f44 (void ) { }
179
179
180
- // RUN: grep ' define i64 @f45()' %t
180
+ // CHECK: define i64 @f45()
181
181
struct s45 { vvbp f0 ; int f1 ; } f45 (void ) { }
182
182
183
- // RUN: grep ' define void @f46(i32 %a0)' %t
183
+ // CHECK: define void @f46(i32 %a0)
184
184
void f46 (enum e40 a0 ) { }
185
185
186
- // RUN: grep ' define void @f47(void ()\ * %a1)' %t
186
+ // CHECK: define void @f47(void ()* %a1)
187
187
void f47 (vvbp a1 ) { }
188
188
189
- // RUN: grep ' define void @f48(i32 %a0.0)' %t
189
+ // CHECK: define void @f48(i32 %a0.0)
190
190
struct s48 { enum e40 f0 ; };
191
191
void f48 (struct s48 a0 ) { }
192
192
193
- // RUN: grep ' define void @f49(i32 %a0.0, i32 %a0.1)' %t
193
+ // CHECK: define void @f49(i32 %a0.0, i32 %a0.1)
194
194
struct s49 { enum e40 f0 ; int f1 ; };
195
195
void f49 (struct s49 a0 ) { }
196
196
197
- // RUN: grep ' define void @f50(void ()\ * %a0.0)' %t
197
+ // CHECK: define void @f50(void ()* %a0.0)
198
198
struct s50 { vvbp f0 ; };
199
199
void f50 (struct s50 a0 ) { }
200
200
201
- // RUN: grep ' define void @f51(void ()\ * %a0.0, i32 %a0.1)' %t
201
+ // CHECK: define void @f51(void ()* %a0.0, i32 %a0.1)
202
202
struct s51 { vvbp f0 ; int f1 ; };
203
203
void f51 (struct s51 a0 ) { }
204
204
0 commit comments