diff --git a/lib/CodeGen/CGObjC.cpp b/lib/CodeGen/CGObjC.cpp
index 1157f48..e95d8e1 100644
--- a/lib/CodeGen/CGObjC.cpp
+++ b/lib/CodeGen/CGObjC.cpp
@@ -187,10 +187,13 @@
                                            Types.ConvertType(PD->getType())));
     EmitReturnOfRValue(RV, PD->getType());
   } else {
-    EmitReturnOfRValue(EmitLoadOfLValue(EmitLValueForIvar(LoadObjCSelf(), 
-                                                          Ivar, 0), 
-                                        Ivar->getType()), 
-                       PD->getType());
+    LValue LV = EmitLValueForIvar(LoadObjCSelf(), Ivar, 0);
+    if (hasAggregateLLVMType(Ivar->getType())) {
+      EmitAggregateCopy(ReturnValue, LV.getAddress(), Ivar->getType());
+    }
+    else
+      EmitReturnOfRValue(EmitLoadOfLValue(LV, Ivar->getType()), 
+                                          PD->getType());
   }
 
   FinishFunction();
diff --git a/test/CodeGenObjC/property-aggr-type.m b/test/CodeGenObjC/property-aggr-type.m
new file mode 100644
index 0000000..dd2ef1f
--- /dev/null
+++ b/test/CodeGenObjC/property-aggr-type.m
@@ -0,0 +1,50 @@
+// RUN: clang -emit-llvm -o %t %s
+
+@interface Object
+- (id) new;
+@end
+
+typedef struct {int x, y, w, h;} st1;
+typedef struct {int x, y, w, h;} st2;
+
+@interface bar : Object
+- (void)setFrame:(st1)frameRect;
+@end
+
+@interface bar1 : Object
+- (void)setFrame:(int)frameRect;
+@end
+
+@interface foo : Object
+{
+	st2 ivar;
+}
+@property (assign) st2 frame;
+@end
+
+@implementation foo
+@synthesize frame = ivar;
+@end
+
+extern void abort();
+
+static   st2 r = {1,2,3,4};
+st2 test (void)
+{
+    foo *obj = [foo new];
+    id objid = [foo new];;
+
+    obj.frame = r;
+
+    ((foo*)objid).frame = obj.frame;
+
+    return ((foo*)objid).frame;
+}
+
+int main ()
+{
+  st2 res = test ();
+  if (res.x != 1 || res.h != 4)
+    abort();
+  return 0;
+}
