diff options
-rw-r--r-- | clang/docs/UsersManual.rst | 11 | ||||
-rw-r--r-- | clang/lib/Sema/SemaCXXScopeSpec.cpp | 4 | ||||
-rw-r--r-- | clang/test/SemaTemplate/lookup-dependent-bases.cpp | 2 |
3 files changed, 10 insertions, 7 deletions
diff --git a/clang/docs/UsersManual.rst b/clang/docs/UsersManual.rst index 05d8f2715f0..15bac1e3e76 100644 --- a/clang/docs/UsersManual.rst +++ b/clang/docs/UsersManual.rst @@ -1216,12 +1216,15 @@ Microsoft extensions clang has some experimental support for extensions from Microsoft Visual C++; to enable it, use the -fms-extensions command-line option. This is the default for Windows targets. Note that the support is incomplete; -enabling Microsoft extensions will silently drop certain constructs -(including ``__declspec`` and Microsoft-style asm statements). +some constructs like dllexport on classes with inline methods will be +ignored with a warning. clang has a -fms-compatibility flag that makes clang accept enough -invalid C++ to be able to parse most Microsoft headers. This flag is -enabled by default for Windows targets. +invalid C++ to be able to parse most Microsoft headers. For example, it +allows `unqualified lookup of dependent base class members +<http://clang.llvm.org/compatibility.html#dep_lookup_bases>`, which is a +common compatibility issue with clang. This flag is enabled by default +for Windows targets. -fdelayed-template-parsing lets clang delay all template instantiation until the end of a translation unit. This flag is enabled by default for diff --git a/clang/lib/Sema/SemaCXXScopeSpec.cpp b/clang/lib/Sema/SemaCXXScopeSpec.cpp index f79ad2cc8c7..674411ec062 100644 --- a/clang/lib/Sema/SemaCXXScopeSpec.cpp +++ b/clang/lib/Sema/SemaCXXScopeSpec.cpp @@ -484,7 +484,7 @@ bool Sema::BuildCXXNestedNameSpecifier(Scope *S, // FIXME: Deal with ambiguities cleanly. - if (Found.empty() && !ErrorRecoveryLookup && !getLangOpts().MicrosoftExt) { + if (Found.empty() && !ErrorRecoveryLookup && !getLangOpts().MicrosoftMode) { // We haven't found anything, and we're not recovering from a // different kind of error, so look for typos. DeclarationName Name = Found.getLookupName(); @@ -644,7 +644,7 @@ bool Sema::BuildCXXNestedNameSpecifier(Scope *S, // public: // void foo() { D::foo2(); } // }; - if (getLangOpts().MicrosoftExt) { + if (getLangOpts().MicrosoftMode) { DeclContext *DC = LookupCtx ? LookupCtx : CurContext; if (DC->isDependentContext() && DC->isFunctionOrMethod()) { SS.Extend(Context, &Identifier, IdentifierLoc, CCLoc); diff --git a/clang/test/SemaTemplate/lookup-dependent-bases.cpp b/clang/test/SemaTemplate/lookup-dependent-bases.cpp index 4fcfbd19640..61fca4a2a45 100644 --- a/clang/test/SemaTemplate/lookup-dependent-bases.cpp +++ b/clang/test/SemaTemplate/lookup-dependent-bases.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fms-extensions -fsyntax-only -verify %s +// RUN: %clang_cc1 -fms-compatibility -fsyntax-only -verify %s // expected-no-diagnostics class C { |