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.
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: 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
30namespace test1 {
31template<typename T> struct RetainPtr {
32  RetainPtr() {}
33};
34
35
36RetainPtr<id<bork> > x;
37RetainPtr<id> y;
38
39}
40