1// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s 2 3struct A { ~A(); }; 4 5@interface B { 6 A a; 7} 8 9- (const A&)getA; 10@end 11 12@implementation B 13 14- (const A&)getA { 15 return a; 16} 17 18@end 19 20// CHECK-LABEL: define void @_Z1fP1B 21// CHECK: objc_msgSend to 22// CHECK-NOT: call void @_ZN1AD1Ev 23// CHECK: ret void 24void f(B* b) { 25 (void)[b getA]; 26} 27 28// PR7741 29@protocol P1 @end 30@protocol P2 @end 31@protocol P3 @end 32@interface foo<P1> {} @end 33@interface bar : foo <P1, P2, P3> {} @end 34typedef bar baz; 35void f5(foo&); 36void f5b(foo<P1>&); 37void f5c(foo<P2>&); 38void f5d(foo<P3>&); 39void f6(baz* x) { 40 f5(*x); 41 f5b(*x); 42 f5c(*x); 43 f5d(*x); 44 (void)((foo&)*x); 45} 46