From 5a2f5d304897220f16e00c05cf122dd95e859aa9 Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Sat, 10 Jan 2009 00:48:18 +0000 Subject: [PATCH] Allow multiple Microsoft calling-convention keywords. Fixes rdar://problem/6486133 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62018 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Parse/ParseDecl.cpp | 4 ++-- test/Parser/MicrosoftExtensions.c | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/Parse/ParseDecl.cpp b/lib/Parse/ParseDecl.cpp index ac1a4be845..3ec1764612 100644 --- a/lib/Parse/ParseDecl.cpp +++ b/lib/Parse/ParseDecl.cpp @@ -1735,8 +1735,8 @@ void Parser::ParseParenDeclarator(Declarator &D) { RequiresArg = true; } // Eat any Microsoft extensions. - if ((Tok.is(tok::kw___cdecl) || Tok.is(tok::kw___stdcall) || - (Tok.is(tok::kw___fastcall))) && PP.getLangOptions().Microsoft) + while ((Tok.is(tok::kw___cdecl) || Tok.is(tok::kw___stdcall) || + (Tok.is(tok::kw___fastcall))) && PP.getLangOptions().Microsoft) ConsumeToken(); // If we haven't past the identifier yet (or where the identifier would be diff --git a/test/Parser/MicrosoftExtensions.c b/test/Parser/MicrosoftExtensions.c index beeef0a9f5..27283de79c 100644 --- a/test/Parser/MicrosoftExtensions.c +++ b/test/Parser/MicrosoftExtensions.c @@ -26,3 +26,5 @@ void *_alloca(int); void foo() { __declspec(align(16)) int *buffer = (int *)_alloca(9); } + +typedef bool (__stdcall __stdcall *blarg)(int); -- 2.50.1