| // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-fragile-abi -emit-llvm -o - %s | FileCheck %s |
| |
| // rdar://problem/9158302 |
| // This should not use a memmove_collectable in non-GC mode. |
| namespace test0 { |
| struct A { |
| id x; |
| }; |
| |
| // CHECK: define [[A:%.*]]* @_ZN5test04testENS_1AE( |
| // CHECK: alloca |
| // CHECK-NEXT: getelementptr |
| // CHECK-NEXT: store |
| // CHECK-NEXT: call noalias i8* @_Znwm( |
| // CHECK-NEXT: bitcast |
| // CHECK-NEXT: bitcast |
| // CHECK-NEXT: bitcast |
| // CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64( |
| // CHECK-NEXT: ret |
| A *test(A a) { |
| return new A(a); |
| } |
| } |
| |
| |
| // rdar://9780211 |
| @protocol bork |
| @end |
| |
| namespace test1 { |
| template<typename T> struct RetainPtr { |
| RetainPtr() {} |
| }; |
| |
| |
| RetainPtr<id<bork> > x; |
| RetainPtr<id> y; |
| |
| } |