1*67e74705SXin Li// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | FileCheck %s 2*67e74705SXin Li 3*67e74705SXin Li// rdar://problem/9158302 4*67e74705SXin Li// This should not use a memmove_collectable in non-GC mode. 5*67e74705SXin Linamespace test0 { 6*67e74705SXin Li struct A { 7*67e74705SXin Li id x; 8*67e74705SXin Li }; 9*67e74705SXin Li 10*67e74705SXin Li // CHECK: define [[A:%.*]]* @_ZN5test04testENS_1AE( 11*67e74705SXin Li // CHECK: alloca 12*67e74705SXin Li // CHECK-NEXT: getelementptr 13*67e74705SXin Li // CHECK-NEXT: store 14*67e74705SXin Li // CHECK-NEXT: call i8* @_Znwm( 15*67e74705SXin Li // CHECK-NEXT: bitcast 16*67e74705SXin Li // CHECK-NEXT: bitcast 17*67e74705SXin Li // CHECK-NEXT: bitcast 18*67e74705SXin Li // CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64( 19*67e74705SXin Li // CHECK-NEXT: ret 20*67e74705SXin Li A *test(A a) { 21*67e74705SXin Li return new A(a); 22*67e74705SXin Li } 23*67e74705SXin Li} 24*67e74705SXin Li 25*67e74705SXin Li 26*67e74705SXin Li// rdar://9780211 27*67e74705SXin Li@protocol bork 28*67e74705SXin Li@end 29*67e74705SXin Li 30*67e74705SXin Linamespace test1 { 31*67e74705SXin Litemplate<typename T> struct RetainPtr { 32*67e74705SXin Li RetainPtr() {} 33*67e74705SXin Li}; 34*67e74705SXin Li 35*67e74705SXin Li 36*67e74705SXin LiRetainPtr<id<bork> > x; 37*67e74705SXin LiRetainPtr<id> y; 38*67e74705SXin Li 39*67e74705SXin Li} 40