Index: lib/Lex/PPMacroExpansion.cpp =================================================================== --- lib/Lex/PPMacroExpansion.cpp +++ lib/Lex/PPMacroExpansion.cpp @@ -1040,6 +1040,7 @@ .Case("cxx_binary_literals", true) .Case("cxx_init_captures", LangOpts.CPlusPlus11) .Case("cxx_variable_templates", LangOpts.CPlusPlus) + .Case("msvc_keywords", LangOpts.MicrosoftExt) .Default(false); } Index: test/Lexer/has_extension.c =================================================================== --- test/Lexer/has_extension.c +++ test/Lexer/has_extension.c @@ -1,4 +1,5 @@ // RUN: %clang_cc1 -E %s -o - | FileCheck --check-prefix=CHECK-PED-NONE %s +// RUN: %clang_cc1 -E -fms-extensions %s -o - | FileCheck --check-prefix=CHECK-MS-EXT %s // RUN: %clang_cc1 -pedantic-errors -E %s -o - | FileCheck --check-prefix=CHECK-PED-ERR %s // CHECK-PED-NONE: no_dummy_extension @@ -42,3 +43,11 @@ #if __has_extension(__c_alignas__) int has_double_underscores(); #endif + +// CHECK-PED-NONE: no_ms_keywords +// CHECK-MS-EXT: has_ms_keywords +#if __has_extension(msvc_keywords) +int has_ms_keywords(); +#else +int no_ms_keywords(); +#endif