diff --git a/lib/CodeGen/CGExpr.cpp b/lib/CodeGen/CGExpr.cpp
index fa70f47..3d8d192 100644
--- a/lib/CodeGen/CGExpr.cpp
+++ b/lib/CodeGen/CGExpr.cpp
@@ -130,7 +130,9 @@
     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 @@
   case PredefinedExpr::Function:
   case PredefinedExpr::PrettyFunction:
     return EmitPredefinedFunctionName(E->getIdentType());
-  case PredefinedExpr::ObjCSuper:
-    return EmitUnsupportedLValue(E, "use of super");
   }
 }
 
@@ -875,6 +875,11 @@
   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/lib/CodeGen/CGObjC.cpp b/lib/CodeGen/CGObjC.cpp
index c0260ad..cb82040 100644
--- a/lib/CodeGen/CGObjC.cpp
+++ b/lib/CodeGen/CGObjC.cpp
@@ -72,9 +72,7 @@
     }
     
     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/lib/CodeGen/CodeGenFunction.h b/lib/CodeGen/CodeGenFunction.h
index ccc5008..e6636ba 100644
--- a/lib/CodeGen/CodeGenFunction.h
+++ b/lib/CodeGen/CodeGenFunction.h
@@ -402,6 +402,7 @@
   LValue EmitObjCMessageExprLValue(const ObjCMessageExpr *E);
   LValue EmitObjCIvarRefLValue(const ObjCIvarRefExpr *E);
   LValue EmitObjCPropertyRefLValue(const ObjCPropertyRefExpr *E);
+  LValue EmitObjCSuperExpr(const ObjCSuperExpr *E);
 
   //===--------------------------------------------------------------------===//
   //                         Scalar Expression Emission
