Parsing of C++11 attributes:
 * Alternative tokens (such as 'compl') are treated as identifiers in
   attribute names.
 * An attribute-list can start with a comma.
 * An ellipsis may not be used with either of our currently-supported
   C++11 attributes.

llvm-svn: 154381
diff --git a/clang/lib/Parse/ParseTentative.cpp b/clang/lib/Parse/ParseTentative.cpp
index 18bc0dd..5ce6b2b 100644
--- a/clang/lib/Parse/ParseTentative.cpp
+++ b/clang/lib/Parse/ParseTentative.cpp
@@ -485,18 +485,17 @@
     //   If a keyword or an alternative token that satisfies the syntactic
     //   requirements of an identifier is contained in an attribute-token,
     //   it is considered an identifier.
-    if (!Tok.getIdentifierInfo()) {
+    SourceLocation Loc;
+    if (!TryParseCXX11AttributeIdentifier(Loc)) {
       IsAttribute = false;
       break;
     }
-    ConsumeToken();
     if (Tok.is(tok::coloncolon)) {
       ConsumeToken();
-      if (!Tok.getIdentifierInfo()) {
+      if (!TryParseCXX11AttributeIdentifier(Loc)) {
         IsAttribute = false;
         break;
       }
-      ConsumeToken();
     }
 
     // Parse the attribute-argument-clause, if present.