blob: e97ca79d3b92c2e8a27028ccc87a4063f2fee3ec [file] [log] [blame]
John McCallf85e1932011-06-15 23:02:42 +00001// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s
2
3// rdar://problem/9158302
4// This should not use a memmove_collectable in non-GC mode.
5namespace 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 noalias i8* @_Znwm(
15 // CHECK-NEXT: bitcast
16 // CHECK-NEXT: bitcast
17 // CHECK-NEXT: call void @llvm.memset.p0i8.i64(
18 // CHECK-NEXT: bitcast
19 // CHECK-NEXT: bitcast
20 // CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(
21 // CHECK-NEXT: ret
22 A *test(A a) {
23 return new A(a);
24 }
25}
26
Chris Lattnerb13eab92011-07-20 06:29:00 +000027
28// rdar://9780211
29@protocol bork
30@end
31
32namespace test1 {
33template<typename T> struct RetainPtr {
34 RetainPtr() {}
35};
36
37
38RetainPtr<id<bork> > x;
39RetainPtr<id> y;
40
41}