Author: fjahanian
Date: Tue Sep  1 12:02:21 2009
New Revision: 80681

URL: http://llvm.org/viewvc/llvm-project?rev=80681&view=rev
Log:
Fixed a property getter ir-gen crash.


Modified:
    cfe/trunk/lib/CodeGen/CGExpr.cpp
    cfe/trunk/lib/CodeGen/CGObjC.cpp
    cfe/trunk/test/CodeGenObjC/property-agrr-getter.m

Modified: cfe/trunk/lib/CodeGen/CGExpr.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExpr.cpp?rev=80681&r1=80680&r2=80681&view=diff

==============================================================================
--- cfe/trunk/lib/CodeGen/CGExpr.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGExpr.cpp Tue Sep  1 12:02:21 2009
@@ -1026,8 +1026,9 @@
     if (PTy->getPointeeType()->isUnionType())
       isUnion = true;
     CVRQualifiers = PTy->getPointeeType().getCVRQualifiers();
-  } else if (isa<ObjCPropertyRefExpr>(BaseExpr) ||
-             isa<ObjCImplicitSetterGetterRefExpr>(BaseExpr)) {
+  } else if (isa<ObjCPropertyRefExpr>(BaseExpr->IgnoreParens()) ||
+             isa<ObjCImplicitSetterGetterRefExpr>(
+               BaseExpr->IgnoreParens())) {
     RValue RV = EmitObjCPropertyGet(BaseExpr);
     BaseValue = RV.getAggregateAddr();
     if (BaseExpr->getType()->isUnionType())

Modified: cfe/trunk/lib/CodeGen/CGObjC.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjC.cpp?rev=80681&r1=80680&r2=80681&view=diff

==============================================================================
--- cfe/trunk/lib/CodeGen/CGObjC.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGObjC.cpp Tue Sep  1 12:02:21 2009
@@ -327,6 +327,7 @@
 }
 
 RValue CodeGenFunction::EmitObjCPropertyGet(const Expr *Exp) {
+  Exp = Exp->IgnoreParens();
   // FIXME: Split it into two separate routines.
   if (const ObjCPropertyRefExpr *E = dyn_cast<ObjCPropertyRefExpr>(Exp)) {
     Selector S = E->getProperty()->getGetterName();

Modified: cfe/trunk/test/CodeGenObjC/property-agrr-getter.m
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/property-agrr-getter.m?rev=80681&r1=80680&r2=80681&view=diff

==============================================================================
--- cfe/trunk/test/CodeGenObjC/property-agrr-getter.m (original)
+++ cfe/trunk/test/CodeGenObjC/property-agrr-getter.m Tue Sep  1 12:02:21 2009
@@ -15,3 +15,24 @@
 }
 @end
 
+
+typedef struct _NSSize {
+    float width;
+    float height;
+} NSSize;
+
+
+...@interface AnObject
+{
+ NSSize size;
+}
+
+...@property NSSize size;
+
+...@end
+
+float f ()
+{
+  AnObject* obj;
+  return (obj.size).width;
+}


_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to