1
- // RUN: %clang_cc1 -no-opaque-pointers %s -triple=x86_64-apple-darwin10 -std=c++11 -emit-llvm -debug-info-kind=limited -o - | FileCheck %s
1
+ // RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -std=c++11 -emit-llvm -debug-info-kind=limited -o - | FileCheck %s
2
2
3
3
class S {
4
4
public:
@@ -32,7 +32,7 @@ @implementation I
32
32
@synthesize frame;
33
33
34
34
// CHECK: define internal void @"\01-[I setPosition:]"
35
- // CHECK: call noundef nonnull align {{[0-9]+}} dereferenceable({{[0-9]+}}) %class.S* @_ZN1SaSERKS_
35
+ // CHECK: call noundef nonnull align {{[0-9]+}} dereferenceable({{[0-9]+}}) ptr @_ZN1SaSERKS_
36
36
// CHECK-NEXT: ret void
37
37
38
38
// Don't attach debug locations to the prologue instructions. These were
@@ -60,8 +60,8 @@ - (struct CGRect)extent {return bounds;}
60
60
@end
61
61
62
62
// CHECK-LABEL: define{{.*}} i32 @main
63
- // CHECK: call void @_ZN1SC1ERKS_(%class.S* {{[^,]*}} [[AGGTMP:%[a-zA-Z0-9\.]+]], %class.S* noundef nonnull align {{[0-9]+}} dereferenceable({{[0-9]+}}) {{%[a-zA-Z0-9\.]+}})
64
- // CHECK: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, %class.S*)*)(i8* noundef {{%[a-zA-Z0-9\.]+}}, i8* noundef {{%[a-zA-Z0-9\.]+}}, %class.S* noundef [[AGGTMP]])
63
+ // CHECK: call void @_ZN1SC1ERKS_(ptr {{[^,]*}} [[AGGTMP:%[a-zA-Z0-9\.]+]], ptr noundef nonnull align {{[0-9]+}} dereferenceable({{[0-9]+}}) {{%[a-zA-Z0-9\.]+}})
64
+ // CHECK: call void @objc_msgSend(ptr noundef {{%[a-zA-Z0-9\.]+}}, ptr noundef {{%[a-zA-Z0-9\.]+}}, ptr noundef [[AGGTMP]])
65
65
// CHECK-NEXT: ret i32 0
66
66
int main () {
67
67
I *i;
@@ -72,9 +72,9 @@ int main() {
72
72
73
73
// rdar://8379892
74
74
// CHECK-LABEL: define{{.*}} void @_Z1fP1A
75
- // CHECK: call void @_ZN1XC1Ev(%struct.X* {{[^,]*}} [[LVTEMP:%[a-zA-Z0-9\.]+]])
76
- // CHECK: call void @_ZN1XC1ERKS_(%struct.X* {{[^,]*}} [[AGGTMP:%[a-zA-Z0-9\.]+]], %struct.X* noundef nonnull align {{[0-9]+}} dereferenceable({{[0-9]+}}) [[LVTEMP]])
77
- // CHECK: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, %struct.X*)*)( {{.*}} %struct.X* noundef [[AGGTMP]])
75
+ // CHECK: call void @_ZN1XC1Ev(ptr {{[^,]*}} [[LVTEMP:%[a-zA-Z0-9\.]+]])
76
+ // CHECK: call void @_ZN1XC1ERKS_(ptr {{[^,]*}} [[AGGTMP:%[a-zA-Z0-9\.]+]], ptr noundef nonnull align {{[0-9]+}} dereferenceable({{[0-9]+}}) [[LVTEMP]])
77
+ // CHECK: call void @objc_msgSend( {{.*}} ptr noundef [[AGGTMP]])
78
78
struct X {
79
79
X ();
80
80
X (const X&);
@@ -116,40 +116,40 @@ void testB0(B *b) {
116
116
void testB1 (B *b) {
117
117
b.b1 += { b_makeInt () };
118
118
}
119
- // CHECK: define{{.*}} void @_Z6testB0P1B([[B:%.*]]*
120
- // CHECK: [[BVAR:%.*]] = alloca [[B]]* , align 8
119
+ // CHECK: define{{.*}} void @_Z6testB0P1B(ptr
120
+ // CHECK: [[BVAR:%.*]] = alloca ptr , align 8
121
121
// CHECK: [[TEMP:%.*]] = alloca [[B0:%.*]], align 8
122
- // CHECK: [[X:%.*]] = getelementptr inbounds [[B0]], [[B0]]* [[TEMP]], i32 0, i32 0
122
+ // CHECK: [[X:%.*]] = getelementptr inbounds [[B0]], ptr [[TEMP]], i32 0, i32 0
123
123
// CHECK-NEXT: [[T0:%.*]] = call noundef i32 @_Z9b_makeIntv()
124
124
// CHECK-NEXT: [[T1:%.*]] = sext i32 [[T0]] to i64
125
- // CHECK-NEXT: store i64 [[T1]], i64* [[X]], align 8
126
- // CHECK: load [[B]]*, [[B]]** [[BVAR]]
125
+ // CHECK-NEXT: store i64 [[T1]], ptr [[X]], align 8
126
+ // CHECK: load ptr, ptr [[BVAR]]
127
127
// CHECK-NOT: call
128
128
// CHECK: call void @llvm.memcpy
129
129
// CHECK-NOT: call
130
- // CHECK: call void bitcast {{.*}} @objc_msgSend
130
+ // CHECK: call void @objc_msgSend
131
131
// CHECK-NOT: call
132
132
// CHECK: ret void
133
133
134
- // CHECK: define{{.*}} void @_Z6testB1P1B([[B]]*
135
- // CHECK: [[BVAR:%.*]] = alloca [[B]]* , align 8
136
- // CHECK: load [[B]]*, [[B]]** [[BVAR]]
134
+ // CHECK: define{{.*}} void @_Z6testB1P1B(ptr
135
+ // CHECK: [[BVAR:%.*]] = alloca ptr , align 8
136
+ // CHECK: load ptr, ptr [[BVAR]]
137
137
// CHECK-NOT: call
138
- // CHECK: [[T0:%.*]] = call i64 bitcast {{.*}} @objc_msgSend
138
+ // CHECK: [[T0:%.*]] = call i64 @objc_msgSend
139
139
// CHECK-NOT: call
140
140
// CHECK: store i64 [[T0]],
141
141
// CHECK-NOT: call
142
142
// CHECK: [[T0:%.*]] = call noundef i32 @_Z9b_makeIntv()
143
143
// CHECK-NEXT: [[T1:%.*]] = sext i32 [[T0]] to i64
144
- // CHECK-NEXT: store i64 [[T1]], i64* {{.*}}, align 8
144
+ // CHECK-NEXT: store i64 [[T1]], ptr {{.*}}, align 8
145
145
// CHECK-NOT: call
146
146
// CHECK: [[T0:%.*]] = call i64 @_Zpl2B1S_
147
147
// CHECK-NOT: call
148
148
// CHECK: store i64 [[T0]],
149
149
// CHECK-NOT: call
150
150
// CHECK: call void @llvm.memcpy
151
151
// CHECK-NOT: call
152
- // CHECK: call void bitcast {{.*}} @objc_msgSend
152
+ // CHECK: call void @objc_msgSend
153
153
// CHECK-NOT: call
154
154
// CHECK: ret void
155
155
@@ -159,18 +159,18 @@ void testB2(B *b) {
159
159
b.b2 = { B3 () };
160
160
}
161
161
162
- // CHECK: define{{.*}} void @_Z6testB2P1B([[B]]*
163
- // CHECK: [[BVAR:%.*]] = alloca [[B]]* , align 8
162
+ // CHECK: define{{.*}} void @_Z6testB2P1B(ptr
163
+ // CHECK: [[BVAR:%.*]] = alloca ptr , align 8
164
164
// CHECK: call void @llvm.dbg.declare(
165
165
// CHECK: call void @_ZN2B3C1Ev(
166
166
// CHECK-NEXT: [[T0:%.*]] = call i64 @_ZN2B3cv2B1Ev(
167
167
// CHECK-NOT: call
168
168
// CHECK: store i64 [[T0]],
169
- // CHECK: load [[B]]*, [[B]]** [[BVAR]]
169
+ // CHECK: load ptr, ptr [[BVAR]]
170
170
// CHECK-NOT: call
171
171
// CHECK: call void @llvm.memcpy
172
172
// CHECK-NOT: call
173
- // CHECK: call void bitcast {{.*}} @objc_msgSend
173
+ // CHECK: call void @objc_msgSend
174
174
// CHECK-NOT: call
175
175
// CHECK: ret void
176
176
@@ -191,24 +191,24 @@ void testC0(C *c) {
191
191
c.c0 = c_helper;
192
192
c.c0 = &c_helper;
193
193
}
194
- // CHECK: define{{.*}} void @_Z6testC0P1C([[C:%.*]]*
195
- // CHECK: [[CVAR:%.*]] = alloca [[C]]* , align 8
196
- // CHECK: load [[C]]*, [[C]]** [[CVAR]]
194
+ // CHECK: define{{.*}} void @_Z6testC0P1C(ptr
195
+ // CHECK: [[CVAR:%.*]] = alloca ptr , align 8
196
+ // CHECK: load ptr, ptr [[CVAR]]
197
197
// CHECK-NOT: call
198
- // CHECK: call void bitcast {{.*}} @objc_msgSend {{.*}} @_Z8c_helperv
198
+ // CHECK: call void @objc_msgSend( {{.*}} @_Z8c_helperv
199
199
// CHECK-NOT: call
200
- // CHECK: call void bitcast {{.*}} @objc_msgSend {{.*}} @_Z8c_helperv
200
+ // CHECK: call void @objc_msgSend( {{.*}} @_Z8c_helperv
201
201
// CHECK-NOT: call
202
202
// CHECK: ret void
203
203
204
204
void testC1 (C *c) {
205
205
c.c1 += c_helper;
206
206
}
207
- // CHECK: define{{.*}} void @_Z6testC1P1C([[C]]*
208
- // CHECK: [[CVAR:%.*]] = alloca [[C]]* , align 8
209
- // CHECK: load [[C]]*, [[C]]** [[CVAR]]
207
+ // CHECK: define{{.*}} void @_Z6testC1P1C(ptr
208
+ // CHECK: [[CVAR:%.*]] = alloca ptr , align 8
209
+ // CHECK: load ptr, ptr [[CVAR]]
210
210
// CHECK-NOT: call
211
- // CHECK: [[T0:%.*]] = call i32 bitcast {{.*}} @objc_msgSend
211
+ // CHECK: [[T0:%.*]] = call i32 @objc_msgSend
212
212
// CHECK-NOT: call
213
213
// CHECK: store i32 [[T0]],
214
214
// CHECK-NOT: call
@@ -218,6 +218,6 @@ void testC1(C *c) {
218
218
// CHECK-NOT: call
219
219
// CHECK: call void @llvm.memcpy
220
220
// CHECK-NOT: call
221
- // CHECK: call void bitcast {{.*}} @objc_msgSend
221
+ // CHECK: call void @objc_msgSend
222
222
// CHECK-NOT: call
223
223
// CHECK: ret void
0 commit comments