]> granicus.if.org Git - clang/commitdiff
Lazily initialize the 'final' and 'override' contextual keywords as suggested by...
authorAnders Carlsson <andersca@mac.com>
Thu, 20 Jan 2011 03:47:08 +0000 (03:47 +0000)
committerAnders Carlsson <andersca@mac.com>
Thu, 20 Jan 2011 03:47:08 +0000 (03:47 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123876 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Parse/Parser.h
lib/Parse/ParseDeclCXX.cpp
lib/Parse/Parser.cpp

index 4ac9eb9987b6c9f5cfeefb4f3c8cca3613de3b04..185f263d5e48bf8e8f5149150fda20c5feba3bd7 100644 (file)
@@ -113,8 +113,8 @@ class Parser : public CodeCompletionHandler {
   IdentifierInfo *Ident_pixel;
 
   /// C++0x contextual keywords. 
-  IdentifierInfo *Ident_final;
-  IdentifierInfo *Ident_override;
+  mutable IdentifierInfo *Ident_final;
+  mutable IdentifierInfo *Ident_override;
 
   llvm::OwningPtr<PragmaHandler> AlignHandler;
   llvm::OwningPtr<PragmaHandler> GCCVisibilityHandler;
index 75a6f59eac0840541757a3acfd01379cd40c5993..0dc367c9fd31d1c61f78057e328bcd96b04d04b7 100644 (file)
@@ -1275,6 +1275,12 @@ VirtSpecifiers::VirtSpecifier Parser::isCXX0XVirtSpecifier() const {
   if (Tok.is(tok::identifier)) {
     IdentifierInfo *II = Tok.getIdentifierInfo();
 
+    // Initialize the contextual keywords.
+    if (!Ident_final) {
+      Ident_final = &PP.getIdentifierTable().get("final");
+      Ident_override = &PP.getIdentifierTable().get("override");
+    }
+
     if (II == Ident_override)
       return VirtSpecifiers::VS_Override;
 
index 47c62377c22792178792c2f059de0c02d02f1fda..3327f7b5a90920cf7b1c79456f09f7408b113dc0 100644 (file)
@@ -387,11 +387,8 @@ void Parser::Initialize() {
     ObjCTypeQuals[objc_byref] = &PP.getIdentifierTable().get("byref");
   }
 
-  // Initialize C++0x contextual keywords.
-  if (getLang().CPlusPlus0x) {
-    Ident_final = &PP.getIdentifierTable().get("final");
-    Ident_override = &PP.getIdentifierTable().get("override");
-  }
+  Ident_final = 0;
+  Ident_override = 0;
 
   Ident_super = &PP.getIdentifierTable().get("super");