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