xref: /aosp_15_r20/external/clang/test/CXX/special/class.copy/p15-inclass.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -emit-llvm -o - %s | FileCheck %s
2*67e74705SXin Li 
3*67e74705SXin Li namespace PR11418 {
4*67e74705SXin Li   struct NonPOD {
5*67e74705SXin Li     NonPOD();
6*67e74705SXin Li     NonPOD(const NonPOD &);
7*67e74705SXin Li     NonPOD(NonPOD &&);
8*67e74705SXin Li   };
9*67e74705SXin Li 
10*67e74705SXin Li   struct X {
11*67e74705SXin Li     NonPOD np;
12*67e74705SXin Li     int a = 17;
13*67e74705SXin Li   };
14*67e74705SXin Li 
check_copy(X x)15*67e74705SXin Li   void check_copy(X x) {
16*67e74705SXin Li     X x2(x);
17*67e74705SXin Li   }
18*67e74705SXin Li 
check_move(X x)19*67e74705SXin Li   void check_move(X x) {
20*67e74705SXin Li     X x3(static_cast<X&&>(x));
21*67e74705SXin Li   }
22*67e74705SXin Li 
23*67e74705SXin Li   // CHECK: define linkonce_odr void @_ZN7PR114181XC2ERKS0_
24*67e74705SXin Li   // CHECK-NOT: 17
25*67e74705SXin Li   // CHECK: call void @_ZN7PR114186NonPODC1ERKS0_
26*67e74705SXin Li   // CHECK-NOT: 17
27*67e74705SXin Li   // CHECK: load i32, i32*
28*67e74705SXin Li   // CHECK-NOT: 17
29*67e74705SXin Li   // CHECK: store i32
30*67e74705SXin Li   // CHECK-NOT: 17
31*67e74705SXin Li   // CHECK: ret
32*67e74705SXin Li 
33*67e74705SXin Li   // CHECK: define linkonce_odr void @_ZN7PR114181XC2EOS0_
34*67e74705SXin Li   // CHECK-NOT: 17
35*67e74705SXin Li   // CHECK: call void @_ZN7PR114186NonPODC1EOS0_
36*67e74705SXin Li   // CHECK-NOT: 17
37*67e74705SXin Li   // CHECK: load i32, i32*
38*67e74705SXin Li   // CHECK-NOT: 17
39*67e74705SXin Li   // CHECK: store i32
40*67e74705SXin Li   // CHECK-NOT: 17
41*67e74705SXin Li   // CHECK: ret
42*67e74705SXin Li }
43