[cfe-commits] r80681 - in /cfe/trunk: lib/CodeGen/CGExpr.cpp lib/CodeGen/CGObjC.cpp test/CodeGenObjC/property-agrr-getter.m

Fariborz Jahanian fjahanian at apple.com
Tue Sep 1 10:02:21 PDT 2009


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;
+
+
+ at interface AnObject
+{
+ NSSize size;
+}
+
+ at property NSSize size;
+
+ at end
+
+float f ()
+{
+  AnObject* obj;
+  return (obj.size).width;
+}





More information about the cfe-commits mailing list