@@ -359,8 +359,11 @@ Decl *Parser::ParseLinkage(ParsingDeclSpec &DS, DeclaratorContext Context) {
359
359
Tok.is (tok::l_brace) ? Tok.getLocation () : SourceLocation ());
360
360
361
361
ParsedAttributes DeclAttrs (AttrFactory);
362
- MaybeParseCXX11Attributes (DeclAttrs);
363
- ParsedAttributes EmptyDeclSpecAttrs (AttrFactory);
362
+ ParsedAttributes DeclSpecAttrs (AttrFactory);
363
+
364
+ while (MaybeParseCXX11Attributes (DeclAttrs) ||
365
+ MaybeParseGNUAttributes (DeclSpecAttrs))
366
+ ;
364
367
365
368
if (Tok.isNot (tok::l_brace)) {
366
369
// Reset the source range in DS, as the leading "extern"
@@ -369,7 +372,7 @@ Decl *Parser::ParseLinkage(ParsingDeclSpec &DS, DeclaratorContext Context) {
369
372
DS.SetRangeEnd (SourceLocation ());
370
373
// ... but anyway remember that such an "extern" was seen.
371
374
DS.setExternInLinkageSpec (true );
372
- ParseExternalDeclaration (DeclAttrs, EmptyDeclSpecAttrs , &DS);
375
+ ParseExternalDeclaration (DeclAttrs, DeclSpecAttrs , &DS);
373
376
return LinkageSpec ? Actions.ActOnFinishLinkageSpecification (
374
377
getCurScope (), LinkageSpec, SourceLocation ())
375
378
: nullptr ;
@@ -411,7 +414,7 @@ Decl *Parser::ParseLinkage(ParsingDeclSpec &DS, DeclaratorContext Context) {
411
414
default :
412
415
ParsedAttributes DeclAttrs (AttrFactory);
413
416
MaybeParseCXX11Attributes (DeclAttrs);
414
- ParseExternalDeclaration (DeclAttrs, EmptyDeclSpecAttrs );
417
+ ParseExternalDeclaration (DeclAttrs, DeclSpecAttrs );
415
418
continue ;
416
419
}
417
420
0 commit comments