diff options
author | John McCall <rjmccall@apple.com> | 2010-08-05 17:13:11 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2010-08-05 17:13:11 +0000 |
commit | 0f8ccc49382e1df00227214d6e05775d43576eb8 (patch) | |
tree | 8813a02cd1f07d0c33ad731d0d8a34149445da22 | |
parent | c53ee449a56730b9a7cb18c48ea47e4b5b23f49e (diff) | |
download | bcm5719-llvm-0f8ccc49382e1df00227214d6e05775d43576eb8.tar.gz bcm5719-llvm-0f8ccc49382e1df00227214d6e05775d43576eb8.zip |
Allow multiple __declspec attributes after a class-key.
Patch by Francois Pichet!
llvm-svn: 110344
-rw-r--r-- | clang/lib/Parse/ParseDeclCXX.cpp | 2 | ||||
-rw-r--r-- | clang/test/Parser/MicrosoftExtensions.c | 1 |
2 files changed, 2 insertions, 1 deletions
diff --git a/clang/lib/Parse/ParseDeclCXX.cpp b/clang/lib/Parse/ParseDeclCXX.cpp index bd8c245f559..55e677dbaae 100644 --- a/clang/lib/Parse/ParseDeclCXX.cpp +++ b/clang/lib/Parse/ParseDeclCXX.cpp @@ -646,7 +646,7 @@ void Parser::ParseClassSpecifier(tok::TokenKind TagTokKind, AttrList = ParseGNUAttributes(); // If declspecs exist after tag, parse them. - if (Tok.is(tok::kw___declspec)) + while (Tok.is(tok::kw___declspec)) AttrList = ParseMicrosoftDeclSpec(AttrList); // If C++0x attributes exist here, parse them. diff --git a/clang/test/Parser/MicrosoftExtensions.c b/clang/test/Parser/MicrosoftExtensions.c index 7b6e60faa49..ec272cdf9c8 100644 --- a/clang/test/Parser/MicrosoftExtensions.c +++ b/clang/test/Parser/MicrosoftExtensions.c @@ -3,6 +3,7 @@ __stdcall int func0(); int __stdcall func(); typedef int (__cdecl *tptr)(); void (*__fastcall fastpfunc)(); +struct __declspec(uuid("00000000-0000-0000-C000-000000000046")) __declspec(novtable) IUnknown {}; extern __declspec(dllimport) void __stdcall VarR4FromDec(); __declspec(deprecated) __declspec(deprecated) char * __cdecl ltoa( long _Val, char * _DstBuf, int _Radix); __declspec(noalias) __declspec(restrict) void * __cdecl xxx( void * _Memory ); |