1
- // RUN: %clang_cc1 -std=c++11 -triple x86_64-unknown-unknown -emit-llvm -o - %s | FileCheck %s
1
+ // RUN: %clang_cc1 -std=c++11 -triple x86_64-unknown-unknown -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK --check-prefix=NEWABI
2
+ // RUN: %clang_cc1 -std=c++11 -triple x86_64-unknown-unknown -fclang-abi-compat=4.0 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK --check-prefix=OLDABI
3
+ // RUN: %clang_cc1 -std=c++11 -triple x86_64-scei-ps4 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK --check-prefix=OLDABI
2
4
// RUN: %clang_cc1 -std=c++11 -triple x86_64-windows-msvc -emit-llvm -o - %s -fms-compatibility -fms-compatibility-version=18 | FileCheck %s -check-prefix=WIN64 -check-prefix=WIN64-18
3
5
// RUN: %clang_cc1 -std=c++11 -triple x86_64-windows-msvc -emit-llvm -o - %s -fms-compatibility -fms-compatibility-version=19 | FileCheck %s -check-prefix=WIN64 -check-prefix=WIN64-19
4
6
@@ -56,8 +58,10 @@ void bar() {
56
58
// CHECK-LABEL: define void @_ZN9move_ctor3barEv()
57
59
// CHECK: call void @_Z{{.*}}C1Ev(
58
60
// CHECK-NOT: call
59
- // CHECK: call void @_ZN9move_ctor3fooENS_1AE(%"struct.move_ctor::A"* %{{.*}})
60
- // CHECK-LABEL: declare void @_ZN9move_ctor3fooENS_1AE(%"struct.move_ctor::A"*)
61
+ // NEWABI: call void @_ZN9move_ctor3fooENS_1AE(%"struct.move_ctor::A"* %{{.*}})
62
+ // OLDABI: call void @_ZN9move_ctor3fooENS_1AE(i8* %{{.*}})
63
+ // NEWABI-LABEL: declare void @_ZN9move_ctor3fooENS_1AE(%"struct.move_ctor::A"*)
64
+ // OLDABI-LABEL: declare void @_ZN9move_ctor3fooENS_1AE(i8*)
61
65
62
66
// WIN64-LABEL: declare void @"\01?foo@move_ctor@@YAXUA@1@@Z"(%"struct.move_ctor::A"*)
63
67
}
@@ -76,8 +80,10 @@ void bar() {
76
80
// CHECK-LABEL: define void @_ZN11all_deleted3barEv()
77
81
// CHECK: call void @_Z{{.*}}C1Ev(
78
82
// CHECK-NOT: call
79
- // CHECK: call void @_ZN11all_deleted3fooENS_1AE(%"struct.all_deleted::A"* %{{.*}})
80
- // CHECK-LABEL: declare void @_ZN11all_deleted3fooENS_1AE(%"struct.all_deleted::A"*)
83
+ // NEWABI: call void @_ZN11all_deleted3fooENS_1AE(%"struct.all_deleted::A"* %{{.*}})
84
+ // OLDABI: call void @_ZN11all_deleted3fooENS_1AE(i8* %{{.*}})
85
+ // NEWABI-LABEL: declare void @_ZN11all_deleted3fooENS_1AE(%"struct.all_deleted::A"*)
86
+ // OLDABI-LABEL: declare void @_ZN11all_deleted3fooENS_1AE(i8*)
81
87
82
88
// WIN64-LABEL: declare void @"\01?foo@all_deleted@@YAXUA@1@@Z"(%"struct.all_deleted::A"*)
83
89
}
@@ -95,8 +101,10 @@ void bar() {
95
101
// CHECK-LABEL: define void @_ZN18implicitly_deleted3barEv()
96
102
// CHECK: call void @_Z{{.*}}C1Ev(
97
103
// CHECK-NOT: call
98
- // CHECK: call void @_ZN18implicitly_deleted3fooENS_1AE(%"struct.implicitly_deleted::A"* %{{.*}})
99
- // CHECK-LABEL: declare void @_ZN18implicitly_deleted3fooENS_1AE(%"struct.implicitly_deleted::A"*)
104
+ // NEWABI: call void @_ZN18implicitly_deleted3fooENS_1AE(%"struct.implicitly_deleted::A"* %{{.*}})
105
+ // OLDABI: call void @_ZN18implicitly_deleted3fooENS_1AE(i8* %{{.*}})
106
+ // NEWABI-LABEL: declare void @_ZN18implicitly_deleted3fooENS_1AE(%"struct.implicitly_deleted::A"*)
107
+ // OLDABI-LABEL: declare void @_ZN18implicitly_deleted3fooENS_1AE(i8*)
100
108
101
109
// In MSVC 2013, the copy ctor is not deleted by a move assignment. In MSVC 2015, it is.
102
110
// WIN64-18-LABEL: declare void @"\01?foo@implicitly_deleted@@YAXUA@1@@Z"(i64
@@ -116,8 +124,10 @@ void bar() {
116
124
// CHECK-LABEL: define void @_ZN11one_deleted3barEv()
117
125
// CHECK: call void @_Z{{.*}}C1Ev(
118
126
// CHECK-NOT: call
119
- // CHECK: call void @_ZN11one_deleted3fooENS_1AE(%"struct.one_deleted::A"* %{{.*}})
120
- // CHECK-LABEL: declare void @_ZN11one_deleted3fooENS_1AE(%"struct.one_deleted::A"*)
127
+ // NEWABI: call void @_ZN11one_deleted3fooENS_1AE(%"struct.one_deleted::A"* %{{.*}})
128
+ // OLDABI: call void @_ZN11one_deleted3fooENS_1AE(i8* %{{.*}})
129
+ // NEWABI-LABEL: declare void @_ZN11one_deleted3fooENS_1AE(%"struct.one_deleted::A"*)
130
+ // OLDABI-LABEL: declare void @_ZN11one_deleted3fooENS_1AE(i8*)
121
131
122
132
// WIN64-LABEL: declare void @"\01?foo@one_deleted@@YAXUA@1@@Z"(%"struct.one_deleted::A"*)
123
133
}
@@ -196,8 +206,10 @@ void bar() {
196
206
}
197
207
// CHECK-LABEL: define void @_ZN14two_copy_ctors3barEv()
198
208
// CHECK: call void @_Z{{.*}}C1Ev(
199
- // CHECK: call void @_ZN14two_copy_ctors3fooENS_1BE(%"struct.two_copy_ctors::B"* %{{.*}})
200
- // CHECK-LABEL: declare void @_ZN14two_copy_ctors3fooENS_1BE(%"struct.two_copy_ctors::B"*)
209
+ // NEWABI: call void @_ZN14two_copy_ctors3fooENS_1BE(%"struct.two_copy_ctors::B"* %{{.*}})
210
+ // OLDABI: call void @_ZN14two_copy_ctors3fooENS_1BE(%"struct.two_copy_ctors::B"* byval
211
+ // NEWABI-LABEL: declare void @_ZN14two_copy_ctors3fooENS_1BE(%"struct.two_copy_ctors::B"*)
212
+ // OLDABI-LABEL: declare void @_ZN14two_copy_ctors3fooENS_1BE(%"struct.two_copy_ctors::B"* byval
201
213
202
214
// WIN64-LABEL: declare void @"\01?foo@two_copy_ctors@@YAXUB@1@@Z"(%"struct.two_copy_ctors::B"*)
203
215
}
@@ -209,7 +221,8 @@ struct A {
209
221
void *p;
210
222
};
211
223
void *foo(A a) { return a.p; }
212
- // CHECK-LABEL: define i8* @_ZN15definition_only3fooENS_1AE(%"struct.definition_only::A"*
224
+ // NEWABI-LABEL: define i8* @_ZN15definition_only3fooENS_1AE(%"struct.definition_only::A"*
225
+ // OLDABI-LABEL: define i8* @_ZN15definition_only3fooENS_1AE(i8*
213
226
// WIN64-LABEL: define i8* @"\01?foo@definition_only@@YAPEAXUA@1@@Z"(%"struct.definition_only::A"*
214
227
}
215
228
@@ -224,7 +237,8 @@ struct A {
224
237
B b;
225
238
};
226
239
void *foo(A a) { return a.b.p; }
227
- // CHECK-LABEL: define i8* @_ZN17deleted_by_member3fooENS_1AE(%"struct.deleted_by_member::A"*
240
+ // NEWABI-LABEL: define i8* @_ZN17deleted_by_member3fooENS_1AE(%"struct.deleted_by_member::A"*
241
+ // OLDABI-LABEL: define i8* @_ZN17deleted_by_member3fooENS_1AE(i8*
228
242
// WIN64-LABEL: define i8* @"\01?foo@deleted_by_member@@YAPEAXUA@1@@Z"(%"struct.deleted_by_member::A"*
229
243
}
230
244
@@ -238,7 +252,8 @@ struct A : B {
238
252
A();
239
253
};
240
254
void *foo(A a) { return a.p; }
241
- // CHECK-LABEL: define i8* @_ZN15deleted_by_base3fooENS_1AE(%"struct.deleted_by_base::A"*
255
+ // NEWABI-LABEL: define i8* @_ZN15deleted_by_base3fooENS_1AE(%"struct.deleted_by_base::A"*
256
+ // OLDABI-LABEL: define i8* @_ZN15deleted_by_base3fooENS_1AE(i8*
242
257
// WIN64-LABEL: define i8* @"\01?foo@deleted_by_base@@YAPEAXUA@1@@Z"(%"struct.deleted_by_base::A"*
243
258
}
244
259
@@ -253,7 +268,8 @@ struct A {
253
268
B b;
254
269
};
255
270
void *foo(A a) { return a.b.p; }
256
- // CHECK-LABEL: define i8* @_ZN22deleted_by_member_copy3fooENS_1AE(%"struct.deleted_by_member_copy::A"*
271
+ // NEWABI-LABEL: define i8* @_ZN22deleted_by_member_copy3fooENS_1AE(%"struct.deleted_by_member_copy::A"*
272
+ // OLDABI-LABEL: define i8* @_ZN22deleted_by_member_copy3fooENS_1AE(i8*
257
273
// WIN64-LABEL: define i8* @"\01?foo@deleted_by_member_copy@@YAPEAXUA@1@@Z"(%"struct.deleted_by_member_copy::A"*
258
274
}
259
275
@@ -267,7 +283,8 @@ struct A : B {
267
283
A();
268
284
};
269
285
void *foo(A a) { return a.p; }
270
- // CHECK-LABEL: define i8* @_ZN20deleted_by_base_copy3fooENS_1AE(%"struct.deleted_by_base_copy::A"*
286
+ // NEWABI-LABEL: define i8* @_ZN20deleted_by_base_copy3fooENS_1AE(%"struct.deleted_by_base_copy::A"*
287
+ // OLDABI-LABEL: define i8* @_ZN20deleted_by_base_copy3fooENS_1AE(i8*
271
288
// WIN64-LABEL: define i8* @"\01?foo@deleted_by_base_copy@@YAPEAXUA@1@@Z"(%"struct.deleted_by_base_copy::A"*
272
289
}
273
290
@@ -277,7 +294,8 @@ struct A {
277
294
A(const A &o) = delete;
278
295
void *p;
279
296
};
280
- // CHECK-LABEL: define i8* @_ZN15explicit_delete3fooENS_1AE(%"struct.explicit_delete::A"*
297
+ // NEWABI-LABEL: define i8* @_ZN15explicit_delete3fooENS_1AE(%"struct.explicit_delete::A"*
298
+ // OLDABI-LABEL: define i8* @_ZN15explicit_delete3fooENS_1AE(i8*
281
299
// WIN64-LABEL: define i8* @"\01?foo@explicit_delete@@YAPEAXUA@1@@Z"(%"struct.explicit_delete::A"*
282
300
void *foo(A a) { return a.p; }
283
301
}
@@ -289,7 +307,8 @@ struct A {
289
307
// Deleted copy ctor due to rvalue ref member.
290
308
int &&ref;
291
309
};
292
- // CHECK-LABEL: define {{.*}} @_ZN28implicitly_deleted_copy_ctor3fooENS_1AE(%"struct.implicitly_deleted_copy_ctor::A"*
310
+ // NEWABI-LABEL: define {{.*}} @_ZN28implicitly_deleted_copy_ctor3fooENS_1AE(%"struct.implicitly_deleted_copy_ctor::A"*
311
+ // OLDABI-LABEL: define {{.*}} @_ZN28implicitly_deleted_copy_ctor3fooENS_1AE(i32*
293
312
// WIN64-LABEL: define {{.*}} @"\01?foo@implicitly_deleted_copy_ctor@@YAAEAHUA@1@@Z"(%"struct.implicitly_deleted_copy_ctor::A"*
294
313
int &foo(A a) { return a.ref; }
295
314
0 commit comments