brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · 10e3c85 Raw
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