[cfe-commits] r129592 - /cfe/trunk/lib/Parse/ParseExprCXX.cpp

Douglas Gregor dgregor at apple.com
Fri Apr 15 12:40:02 PDT 2011


Author: dgregor
Date: Fri Apr 15 14:40:02 2011
New Revision: 129592

URL: http://llvm.org/viewvc/llvm-project?rev=129592&view=rev
Log:
Parse GNU-style attributes prior to the type-id/new-type-id in a C++
"new" expression. This matches GCC's parser. Test is forthcoming.

Modified:
    cfe/trunk/lib/Parse/ParseExprCXX.cpp

Modified: cfe/trunk/lib/Parse/ParseExprCXX.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseExprCXX.cpp?rev=129592&r1=129591&r2=129592&view=diff
==============================================================================
--- cfe/trunk/lib/Parse/ParseExprCXX.cpp (original)
+++ cfe/trunk/lib/Parse/ParseExprCXX.cpp Fri Apr 15 14:40:02 2011
@@ -1707,6 +1707,7 @@
 ///
 ///        new-type-id:
 ///                   type-specifier-seq new-declarator[opt]
+/// [GNU]             attributes type-specifier-seq new-declarator[opt]
 ///
 ///        new-declarator:
 ///                   ptr-operator new-declarator[opt]
@@ -1752,12 +1753,14 @@
       // We still need the type.
       if (Tok.is(tok::l_paren)) {
         TypeIdParens.setBegin(ConsumeParen());
+        MaybeParseGNUAttributes(DeclaratorInfo);
         ParseSpecifierQualifierList(DS);
         DeclaratorInfo.SetSourceRange(DS.getSourceRange());
         ParseDeclarator(DeclaratorInfo);
         TypeIdParens.setEnd(MatchRHSPunctuation(tok::r_paren, 
                                                 TypeIdParens.getBegin()));
       } else {
+        MaybeParseGNUAttributes(DeclaratorInfo);
         if (ParseCXXTypeSpecifierSeq(DS))
           DeclaratorInfo.setInvalidType(true);
         else {
@@ -1770,6 +1773,7 @@
   } else {
     // A new-type-id is a simplified type-id, where essentially the
     // direct-declarator is replaced by a direct-new-declarator.
+    MaybeParseGNUAttributes(DeclaratorInfo);
     if (ParseCXXTypeSpecifierSeq(DS))
       DeclaratorInfo.setInvalidType(true);
     else {





More information about the cfe-commits mailing list