diff options
Diffstat (limited to 'clang/lib/CodeGen')
-rw-r--r-- | clang/lib/CodeGen/CGExpr.cpp | 11 | ||||
-rw-r--r-- | clang/lib/CodeGen/CGObjC.cpp | 4 | ||||
-rw-r--r-- | clang/lib/CodeGen/CodeGenFunction.h | 1 |
3 files changed, 10 insertions, 6 deletions
diff --git a/clang/lib/CodeGen/CGExpr.cpp b/clang/lib/CodeGen/CGExpr.cpp index fa70f47da92..3d8d192a2d8 100644 --- a/clang/lib/CodeGen/CGExpr.cpp +++ b/clang/lib/CodeGen/CGExpr.cpp @@ -130,7 +130,9 @@ LValue CodeGenFunction::EmitLValue(const Expr *E) { return EmitObjCIvarRefLValue(cast<ObjCIvarRefExpr>(E)); case Expr::ObjCPropertyRefExprClass: return EmitObjCPropertyRefLValue(cast<ObjCPropertyRefExpr>(E)); - + case Expr::ObjCSuperExprClass: + return EmitObjCSuperExpr(cast<ObjCSuperExpr>(E)); + case Expr::UnaryOperatorClass: return EmitUnaryOpLValue(cast<UnaryOperator>(E)); case Expr::ArraySubscriptExprClass: @@ -571,8 +573,6 @@ LValue CodeGenFunction::EmitPredefinedLValue(const PredefinedExpr *E) { case PredefinedExpr::Function: case PredefinedExpr::PrettyFunction: return EmitPredefinedFunctionName(E->getIdentType()); - case PredefinedExpr::ObjCSuper: - return EmitUnsupportedLValue(E, "use of super"); } } @@ -875,6 +875,11 @@ CodeGenFunction::EmitObjCPropertyRefLValue(const ObjCPropertyRefExpr *E) { return LValue::MakePropertyRef(E, E->getType().getCVRQualifiers()); } +LValue +CodeGenFunction::EmitObjCSuperExpr(const ObjCSuperExpr *E) { + return EmitUnsupportedLValue(E, "use of super"); +} + RValue CodeGenFunction::EmitCallExpr(llvm::Value *Callee, QualType FnType, CallExpr::const_arg_iterator ArgBeg, CallExpr::const_arg_iterator ArgEnd) { diff --git a/clang/lib/CodeGen/CGObjC.cpp b/clang/lib/CodeGen/CGObjC.cpp index c0260ad06b3..cb820409d67 100644 --- a/clang/lib/CodeGen/CGObjC.cpp +++ b/clang/lib/CodeGen/CGObjC.cpp @@ -72,9 +72,7 @@ RValue CodeGenFunction::EmitObjCMessageExpr(const ObjCMessageExpr *E) { } isClassMessage = true; - } else if (isa<PredefinedExpr>(E->getReceiver())) { - assert(cast<PredefinedExpr>(E->getReceiver())->getIdentType() == - PredefinedExpr::ObjCSuper); + } else if (isa<ObjCSuperExpr>(E->getReceiver())) { isSuperMessage = true; Receiver = LoadObjCSelf(); } else { diff --git a/clang/lib/CodeGen/CodeGenFunction.h b/clang/lib/CodeGen/CodeGenFunction.h index ccc5008aee1..e6636ba27b6 100644 --- a/clang/lib/CodeGen/CodeGenFunction.h +++ b/clang/lib/CodeGen/CodeGenFunction.h @@ -402,6 +402,7 @@ public: LValue EmitObjCMessageExprLValue(const ObjCMessageExpr *E); LValue EmitObjCIvarRefLValue(const ObjCIvarRefExpr *E); LValue EmitObjCPropertyRefLValue(const ObjCPropertyRefExpr *E); + LValue EmitObjCSuperExpr(const ObjCSuperExpr *E); //===--------------------------------------------------------------------===// // Scalar Expression Emission |