mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-12-01 01:31:26 +00:00
Fixed a property getter ir-gen crash.
llvm-svn: 80681
This commit is contained in:
parent
1543d133db
commit
1a50477385
@ -1026,8 +1026,9 @@ LValue CodeGenFunction::EmitMemberExpr(const MemberExpr *E) {
|
||||
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())
|
||||
|
@ -327,6 +327,7 @@ RValue CodeGenFunction::EmitObjCSuperPropertyGet(const Expr *Exp,
|
||||
}
|
||||
|
||||
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();
|
||||
|
@ -15,3 +15,24 @@ typedef struct {
|
||||
}
|
||||
@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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user