Eliminate usage of ObjCSuperExpr used for
'super' as receiver of property or a setter/getter
methods. //rdar: //8525788
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116483 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGObjC.cpp b/lib/CodeGen/CGObjC.cpp
index 8abcbea..7c2dfe8 100644
--- a/lib/CodeGen/CGObjC.cpp
+++ b/lib/CodeGen/CGObjC.cpp
@@ -534,7 +534,7 @@
// FIXME: Split it into two separate routines.
if (const ObjCPropertyRefExpr *E = dyn_cast<ObjCPropertyRefExpr>(Exp)) {
Selector S = E->getProperty()->getGetterName();
- if (isa<ObjCSuperExpr>(E->getBase()))
+ if (E->isSuperReceiver())
return EmitObjCSuperPropertyGet(E, S, Return);
return CGM.getObjCRuntime().
GenerateMessageSend(*this, Return, Exp->getType(), S,
@@ -548,7 +548,7 @@
if (KE->getInterfaceDecl()) {
const ObjCInterfaceDecl *OID = KE->getInterfaceDecl();
Receiver = CGM.getObjCRuntime().GetClass(Builder, OID);
- } else if (isa<ObjCSuperExpr>(KE->getBase()))
+ } else if (KE->isSuperReceiver())
return EmitObjCSuperPropertyGet(KE, S, Return);
else
Receiver = EmitScalarExpr(KE->getBase());
@@ -586,7 +586,7 @@
// FIXME: Split it into two separate routines.
if (const ObjCPropertyRefExpr *E = dyn_cast<ObjCPropertyRefExpr>(Exp)) {
Selector S = E->getProperty()->getSetterName();
- if (isa<ObjCSuperExpr>(E->getBase())) {
+ if (E->isSuperReceiver()) {
EmitObjCSuperPropertySet(E, S, Src);
return;
}
@@ -605,7 +605,7 @@
if (E->getInterfaceDecl()) {
const ObjCInterfaceDecl *OID = E->getInterfaceDecl();
Receiver = CGM.getObjCRuntime().GetClass(Builder, OID);
- } else if (isa<ObjCSuperExpr>(E->getBase())) {
+ } else if (E->isSuperReceiver()) {
EmitObjCSuperPropertySet(E, S, Src);
return;
} else