diff options
| author | Anders Carlsson <andersca@mac.com> | 2011-01-20 03:47:08 +0000 |
|---|---|---|
| committer | Anders Carlsson <andersca@mac.com> | 2011-01-20 03:47:08 +0000 |
| commit | 428803b58a42127e9b4dbea7537f2b70580aaafb (patch) | |
| tree | f70976a3a1b81e6d6c595b80bc6189264428c4d2 | |
| parent | d802266c6b148ef762d5c8752ea2a989f2114884 (diff) | |
| download | bcm5719-llvm-428803b58a42127e9b4dbea7537f2b70580aaafb.tar.gz bcm5719-llvm-428803b58a42127e9b4dbea7537f2b70580aaafb.zip | |
Lazily initialize the 'final' and 'override' contextual keywords as suggested by Doug.
llvm-svn: 123876
| -rw-r--r-- | clang/include/clang/Parse/Parser.h | 4 | ||||
| -rw-r--r-- | clang/lib/Parse/ParseDeclCXX.cpp | 6 | ||||
| -rw-r--r-- | clang/lib/Parse/Parser.cpp | 7 |
3 files changed, 10 insertions, 7 deletions
diff --git a/clang/include/clang/Parse/Parser.h b/clang/include/clang/Parse/Parser.h index 4ac9eb9987b..185f263d5e4 100644 --- a/clang/include/clang/Parse/Parser.h +++ b/clang/include/clang/Parse/Parser.h @@ -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; diff --git a/clang/lib/Parse/ParseDeclCXX.cpp b/clang/lib/Parse/ParseDeclCXX.cpp index 75a6f59eac0..0dc367c9fd3 100644 --- a/clang/lib/Parse/ParseDeclCXX.cpp +++ b/clang/lib/Parse/ParseDeclCXX.cpp @@ -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; diff --git a/clang/lib/Parse/Parser.cpp b/clang/lib/Parse/Parser.cpp index 47c62377c22..3327f7b5a90 100644 --- a/clang/lib/Parse/Parser.cpp +++ b/clang/lib/Parse/Parser.cpp @@ -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"); |

