diff --git a/Driver/RewriteObjC.cpp b/Driver/RewriteObjC.cpp
index e022dda..0ee0599 100644
--- a/Driver/RewriteObjC.cpp
+++ b/Driver/RewriteObjC.cpp
@@ -2000,6 +2000,8 @@
   
   // Derive/push the receiver/selector, 2 implicit arguments to objc_msgSend().
   if (clsName) { // class message.
+    // FIXME: We need to fix Sema (and the AST for ObjCMessageExpr) to handle
+    // the 'super' idiom within a class method.
     if (!strcmp(clsName->getName(), "super")) {
       MsgSendFlavor = MsgSendSuperFunctionDecl;
       if (MsgSendStretFlavor)
diff --git a/include/clang/AST/ExprObjC.h b/include/clang/AST/ExprObjC.h
index e63242e..ab4992c 100644
--- a/include/clang/AST/ExprObjC.h
+++ b/include/clang/AST/ExprObjC.h
@@ -286,6 +286,7 @@
   /// getReceiver - Returns the receiver of the message expression.
   ///  This can be NULL if the message is for class methods.  For
   ///  class methods, use getClassName.
+  /// FIXME: need to handle/detect 'super' usage within a class method.
   Expr *getReceiver() { 
     uintptr_t x = (uintptr_t) SubExprs[RECEIVER];
     return (x & Flags) == IsInstMeth ? (Expr*) x : 0;
diff --git a/lib/Sema/SemaExprObjC.cpp b/lib/Sema/SemaExprObjC.cpp
index 333268e..5d16823 100644
--- a/lib/Sema/SemaExprObjC.cpp
+++ b/lib/Sema/SemaExprObjC.cpp
@@ -147,7 +147,10 @@
 
   Expr **ArgExprs = reinterpret_cast<Expr **>(Args);
   ObjCInterfaceDecl* ClassDecl = 0;
+  bool isSuper = false;
+  
   if (!strcmp(receiverName->getName(), "super") && getCurMethodDecl()) {
+    isSuper = true;
     ClassDecl = getCurMethodDecl()->getClassInterface()->getSuperClass();
     if (!ClassDecl)
       return Diag(lbrac, diag::error_no_super_class,
@@ -206,11 +209,14 @@
   // If we have the ObjCInterfaceDecl* for the class that is receiving
   // the message, use that to construct the ObjCMessageExpr.  Otherwise
   // pass on the IdentifierInfo* for the class.
-  if (ClassDecl)
-    return new ObjCMessageExpr(ClassDecl, Sel, returnType, Method,
+  // FIXME: need to do a better job handling 'super' usage within a class 
+  // For now, we simply pass the "super" identifier through (which isn't
+  // consistent with instance methods.
+  if (isSuper || !ClassDecl)
+    return new ObjCMessageExpr(receiverName, Sel, returnType, Method,
                                lbrac, rbrac, ArgExprs, NumArgs);
   else
-    return new ObjCMessageExpr(receiverName, Sel, returnType, Method,
+    return new ObjCMessageExpr(ClassDecl, Sel, returnType, Method,
                                lbrac, rbrac, ArgExprs, NumArgs);
 }
 
