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