76 lines · plain
1// RUN: %clang_cc1 -fobjc-gc -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | FileCheck %s2 3struct A { 4 A();5 A(const A&);6 A(A&);7 ~A();8};9 10struct B {11 B();12 B(B&);13};14 15struct C {16 C() {}17 C(C& other, A a = A());18 int i, j;19};20 21struct POD {22 id myobjc;23 int array[3][4];24};25 26struct D : A, B, virtual C { 27 D();28 int scalar;29 int scalar_array[2][3];30 B class_member;31 C class_member_array[2][3];32 POD pod_array[2][3];33 34 union {35 int x;36 float f[3];37 };38};39 40void f(D d) {41 D d2(d);42}43 44// CHECK-LABEL: define linkonce_odr void @_ZN1DC1ERS_(ptr {{[^,]*}} %this, ptr noundef nonnull align {{[0-9]+}} dereferenceable({{[0-9]+}}) %0) unnamed_addr45// CHECK: call void @_ZN1AC1Ev46// CHECK: call void @_ZN1CC2ERS_1A47// CHECK: call void @_ZN1AD1Ev48// CHECK: call void @_ZN1AC2ERS_49// CHECK: call void @_ZN1BC2ERS_50// CHECK: {{call void @llvm.memcpy.p0.p0.i64.*i64 24}}51// CHECK: call void @_ZN1BC1ERS_52// CHECK: br label53// CHECK: call void @_ZN1AC1Ev54// CHECK: call void @_ZN1CC1ERS_1A55// CHECK: call void @_ZN1AD1Ev56// CHECK: {{icmp eq.*, 3}}57// CHECK: br i158// CHECK: {{icmp eq.*, 2}}59// CHECK: br i160// CHECK: {{call.*@objc_memmove_collectable}}61// CHECK: {{call void @llvm.memcpy.p0.p0.i64.*i64 12}}62// CHECK: ret void63 64 65template<class T> struct X0 { void f0(T * ) { } };66template <class > struct X1 { X1( X1& , int = 0 ) { } };67struct X2 { X1<int> result; };68void test_X2()69{70 typedef X2 impl;71 typedef X0<impl> pimpl;72 impl* i;73 pimpl pdata;74 pdata.f0( new impl(*i));75}76