48 lines · cpp
1// RUN: %clang_cc1 %s -std=c++11 -emit-llvm -o - -triple=i686-linux-gnu | FileCheck %s2 3struct A {4 A(const A&);5 A &operator=(const A&);6};7 8struct B {9 A a;10 B(B&&) = default;11 B &operator=(B&&) = default;12};13 14// CHECK: define {{.*}} @_Z2f115void f1(B &x) {16 // CHECK-NOT: memcpy17 // CHECK: call {{.*}} @_ZN1BC1EOS_(18 B b(static_cast<B&&>(x));19}20 21// CHECK: define {{.*}} @_Z2f222void f2(B &x, B &y) {23 // CHECK-NOT: memcpy24 // CHECK: call {{.*}} @_ZN1BaSEOS_(25 x = static_cast<B&&>(y);26}27 28// CHECK: define {{.*}} @_ZN1BaSEOS_(29// CHECK: call {{.*}} @_ZN1AaSERKS_(30 31template<int> struct C { C() = default; };32struct D {33 C<0> c;34 D() { }35};36template struct C<0>; // was asserting37void f3() {38 C<0> a;39 D b;40}41// Trivial default ctor, might or might not be defined, but we must not expect42// someone else to define it.43// CHECK-NOT: declare {{.*}} @_ZN1CILi0EEC1Ev44// CHECK: define {{.*}} @_ZN1DC1Ev45 46// CHECK: define {{.*}} @_ZN1BC2EOS_(47// CHECK: call {{.*}} @_ZN1AC1ERKS_(48