diff --git a/include/clang/Lex/Token.h b/include/clang/Lex/Token.h
index d5bfd9c..474d404 100644
--- a/include/clang/Lex/Token.h
+++ b/include/clang/Lex/Token.h
@@ -85,10 +85,6 @@
     IdentInfo = II;
   }
   
-  /// isNamedIdentifier - Return true if this token is a ppidentifier with the
-  /// specified name.  For example, tok.isNamedIdentifier("this").
-  bool isNamedIdentifier(const char *Name) const;
-  
   /// setFlag - Set the specified flag.
   void setFlag(TokenFlags Flag) {
     Flags |= Flag;
diff --git a/include/clang/Parse/Parser.h b/include/clang/Parse/Parser.h
index cd63b99..83ec0a7 100644
--- a/include/clang/Parse/Parser.h
+++ b/include/clang/Parse/Parser.h
@@ -51,6 +51,11 @@
   enum { ScopeCacheSize = 16 };
   unsigned NumCachedScopes;
   Scope *ScopeCache[ScopeCacheSize];
+
+  /// Ident_super - IdentifierInfo for "super", to support fast
+  /// comparison.
+  IdentifierInfo *Ident_super;
+
 public:
   Parser(Preprocessor &PP, Action &Actions);
   ~Parser();
@@ -434,7 +439,7 @@
     if (Actions.isTypeName(*Tok.getIdentifierInfo(), CurScope))
       return true;
     
-    return Tok.isNamedIdentifier("super");
+    return Tok.getIdentifierInfo() == Ident_super;
   }
   
   ExprResult ParseObjCAtExpression(SourceLocation AtLocation);
diff --git a/lib/Lex/Lexer.cpp b/lib/Lex/Lexer.cpp
index 4fbbe3c..8bce589 100644
--- a/lib/Lex/Lexer.cpp
+++ b/lib/Lex/Lexer.cpp
@@ -51,12 +51,6 @@
   return specId ? specId->getObjCKeywordID() : tok::objc_not_keyword;
 }
 
-/// isNamedIdentifier - Return true if this token is a ppidentifier with the
-/// specified name.  For example, tok.isNamedIdentifier("this").
-bool Token::isNamedIdentifier(const char *Name) const {
-  return IdentInfo && !strcmp(IdentInfo->getName(), Name);
-}
-
 
 //===----------------------------------------------------------------------===//
 // Lexer Class Implementation
diff --git a/lib/Parse/Parser.cpp b/lib/Parse/Parser.cpp
index 7bd8b7b..a5e73cc 100644
--- a/lib/Parse/Parser.cpp
+++ b/lib/Parse/Parser.cpp
@@ -267,6 +267,8 @@
                                   &PP.getIdentifierTable().get("nonatomic");
     ObjCForCollectionInKW = &PP.getIdentifierTable().get("in");
   }
+
+  Ident_super = &PP.getIdentifierTable().get("super");
 }
 
 /// ParseTopLevelDecl - Parse one top-level declaration, return whatever the
diff --git a/lib/Sema/Sema.cpp b/lib/Sema/Sema.cpp
index 46c9e99..c8d83bd 100644
--- a/lib/Sema/Sema.cpp
+++ b/lib/Sema/Sema.cpp
@@ -103,6 +103,8 @@
   KnownFunctionIDs[id_vsprintf]  = &IT.get("vsprintf");
   KnownFunctionIDs[id_vprintf]   = &IT.get("vprintf");
 
+  SuperID = &IT.get("super");
+
   TUScope = 0;
   if (getLangOptions().CPlusPlus)
     FieldCollector.reset(new CXXFieldCollector());
diff --git a/lib/Sema/Sema.h b/lib/Sema/Sema.h
index d6dcaf2..98f98aa 100644
--- a/lib/Sema/Sema.h
+++ b/lib/Sema/Sema.h
@@ -137,7 +137,10 @@
   /// kinds of checking (e.g. checking format string errors in printf calls).
   /// This list is populated upon the creation of a Sema object.    
   IdentifierInfo* KnownFunctionIDs[ id_num_known_functions ];
-  
+
+  /// SuperID - Identifier for "super" used for Objective-C checking.
+  IdentifierInfo* SuperID;
+
   /// Translation Unit Scope - useful to Objective-C actions that need
   /// to lookup file scope declarations in the "ordinary" C decl namespace.
   /// For example, user-defined classes, built-in "id" type, etc.
diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp
index 2e99b3d..58a126b 100644
--- a/lib/Sema/SemaExpr.cpp
+++ b/lib/Sema/SemaExpr.cpp
@@ -328,7 +328,7 @@
       }
     }
     // Needed to implement property "super.method" notation.
-    if (SD == 0 && !strcmp(II.getName(), "super")) {
+    if (SD == 0 && &II == SuperID) {
       QualType T = Context.getPointerType(Context.getObjCInterfaceType(
                      getCurMethodDecl()->getClassInterface()));
       return new PredefinedExpr(Loc, T, PredefinedExpr::ObjCSuper);
diff --git a/lib/Sema/SemaExprObjC.cpp b/lib/Sema/SemaExprObjC.cpp
index 75546ea..7c2f45b6 100644
--- a/lib/Sema/SemaExprObjC.cpp
+++ b/lib/Sema/SemaExprObjC.cpp
@@ -150,7 +150,7 @@
   ObjCInterfaceDecl* ClassDecl = 0;
   bool isSuper = false;
   
-  if (!strcmp(receiverName->getName(), "super") && getCurMethodDecl()) {
+  if (receiverName == SuperID && getCurMethodDecl()) {
     isSuper = true;
     ClassDecl = getCurMethodDecl()->getClassInterface()->getSuperClass();
     if (!ClassDecl)
