diff options
-rw-r--r-- | lib/Parse/ParseTentative.cpp | 6 | ||||
-rw-r--r-- | test/Parser/MicrosoftExtensions.c | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/lib/Parse/ParseTentative.cpp b/lib/Parse/ParseTentative.cpp index dd75319b28..11df2f45ce 100644 --- a/lib/Parse/ParseTentative.cpp +++ b/lib/Parse/ParseTentative.cpp @@ -624,6 +624,12 @@ Parser::TPResult Parser::isCXXDeclarationSpecifier() { case tok::kw__Complex: case tok::kw___attribute: return TPResult::True(); + + // Microsoft + case tok::kw___cdecl: + case tok::kw___stdcall: + case tok::kw___fastcall: + return PP.getLangOptions().Microsoft ? TPResult::True() : TPResult::False(); // The ambiguity resides in a simple-type-specifier/typename-specifier // followed by a '('. The '(' could either be the start of: diff --git a/test/Parser/MicrosoftExtensions.c b/test/Parser/MicrosoftExtensions.c index 0ff59f75aa..6b097ab7a8 100644 --- a/test/Parser/MicrosoftExtensions.c +++ b/test/Parser/MicrosoftExtensions.c @@ -1,4 +1,4 @@ -// RUN: clang -fsyntax-only -verify -fms-extensions %s +// RUN: clang -fsyntax-only -verify -fms-extensions -x=objective-c++ %s __stdcall int func0(); int __stdcall func(); typedef int (__cdecl *tptr)(); |