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