summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2011-01-20 03:47:08 +0000
committerAnders Carlsson <andersca@mac.com>2011-01-20 03:47:08 +0000
commit428803b58a42127e9b4dbea7537f2b70580aaafb (patch)
treef70976a3a1b81e6d6c595b80bc6189264428c4d2
parentd802266c6b148ef762d5c8752ea2a989f2114884 (diff)
downloadbcm5719-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.h4
-rw-r--r--clang/lib/Parse/ParseDeclCXX.cpp6
-rw-r--r--clang/lib/Parse/Parser.cpp7
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");
OpenPOWER on IntegriCloud