[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