// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s // CHECK-NOT: callq _objc_msgSend_stret // CHECK: call void @_ZN1SC1ERKS_ // CHECK: call %class.S* @_ZN1SaSERKS_ // CHECK: call %struct.CGRect* @_ZN6CGRectaSERKS_ class S { public: S& operator = (const S&); S (const S&); S (); }; struct CGRect { CGRect & operator = (const CGRect &); }; @interface I { S position; CGRect bounds; } @property(assign, nonatomic) S position; @property CGRect bounds; @property CGRect frame; - (void)setFrame:(CGRect)frameRect; - (CGRect)frame; - (void) initWithOwner; - (struct CGRect)extent; - (void)dealloc; @end @implementation I @synthesize position; @synthesize bounds; @synthesize frame; - (void)setFrame:(CGRect)frameRect {} - (CGRect)frame {return bounds;} - (void)initWithOwner { I* _labelLayer; CGRect labelLayerFrame = self.bounds; labelLayerFrame = self.bounds; _labelLayer.frame = labelLayerFrame; } // rdar://8366604 - (void)dealloc { CGRect cgrect = self.extent; } - (struct CGRect)extent {return bounds;} @end int main() { I *i; S s1; i.position = s1; return 0; } // rdar://8379892 // CHECK: define void @_Z1fP1A // CHECK: @objc_msgSend to void struct X { X(); X(const X&); ~X(); }; @interface A { X xval; } - (X)x; - (void)setX:(X)x; @end void f(A* a) { a.x = X(); }