brintos

brintos / llvm-project-archived public Read only

0
0
Text · 989 B · f67acaa Raw
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