<div dir="ltr">On Fri, Sep 20, 2013 at 10:04 AM, Reid Kleckner <span dir="ltr"><<a href="mailto:reid@kleckner.net" target="_blank">reid@kleckner.net</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: rnk<br>
Date: Fri Sep 20 12:04:25 2013<br>
New Revision: 191095<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=191095&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=191095&view=rev</a><br>
Log:<br>
Use -fms-compatibility to trigger lookup into dep. bases<br>
<br>
Update the docs for -fms-extensions and -fms-compatibility to try to<br>
clarify the difference between the two.<br>
<br>
Modified:<br>
    cfe/trunk/docs/UsersManual.rst<br>
    cfe/trunk/lib/Sema/SemaCXXScopeSpec.cpp<br>
    cfe/trunk/test/SemaTemplate/lookup-dependent-bases.cpp<br>
<br>
Modified: cfe/trunk/docs/UsersManual.rst<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/UsersManual.rst?rev=191095&r1=191094&r2=191095&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/UsersManual.rst?rev=191095&r1=191094&r2=191095&view=diff</a><br>

==============================================================================<br>
--- cfe/trunk/docs/UsersManual.rst (original)<br>
+++ cfe/trunk/docs/UsersManual.rst Fri Sep 20 12:04:25 2013<br>
@@ -1216,12 +1216,15 @@ Microsoft extensions<br>
 clang has some experimental support for extensions from Microsoft Visual<br>
 C++; to enable it, use the -fms-extensions command-line option. This is<br>
 the default for Windows targets. Note that the support is incomplete;<br>
-enabling Microsoft extensions will silently drop certain constructs<br>
-(including ``__declspec`` and Microsoft-style asm statements).<br>
+some constructs like dllexport on classes with inline methods will be<br>
+ignored with a warning.<br></blockquote><div><br></div><div>We drop MS IDL-style attributes with no warning.</div><div><br></div><div>[hello world] struct S {};</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

 clang has a -fms-compatibility flag that makes clang accept enough<br>
-invalid C++ to be able to parse most Microsoft headers. This flag is<br>
-enabled by default for Windows targets.<br>
+invalid C++ to be able to parse most Microsoft headers. For example, it<br>
+allows `unqualified lookup of dependent base class members<br>
+<<a href="http://clang.llvm.org/compatibility.html#dep_lookup_bases" target="_blank">http://clang.llvm.org/compatibility.html#dep_lookup_bases</a>>`, which is a<br>
+common compatibility issue with clang. This flag is enabled by default<br>
+for Windows targets.<br>
<br>
 -fdelayed-template-parsing lets clang delay all template instantiation<br>
 until the end of a translation unit. This flag is enabled by default for<br>
<br>
Modified: cfe/trunk/lib/Sema/SemaCXXScopeSpec.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaCXXScopeSpec.cpp?rev=191095&r1=191094&r2=191095&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaCXXScopeSpec.cpp?rev=191095&r1=191094&r2=191095&view=diff</a><br>

==============================================================================<br>
--- cfe/trunk/lib/Sema/SemaCXXScopeSpec.cpp (original)<br>
+++ cfe/trunk/lib/Sema/SemaCXXScopeSpec.cpp Fri Sep 20 12:04:25 2013<br>
@@ -484,7 +484,7 @@ bool Sema::BuildCXXNestedNameSpecifier(S<br>
<br>
   // FIXME: Deal with ambiguities cleanly.<br>
<br>
-  if (Found.empty() && !ErrorRecoveryLookup && !getLangOpts().MicrosoftExt) {<br>
+  if (Found.empty() && !ErrorRecoveryLookup && !getLangOpts().MicrosoftMode) {<br>
     // We haven't found anything, and we're not recovering from a<br>
     // different kind of error, so look for typos.<br>
     DeclarationName Name = Found.getLookupName();<br>
@@ -644,7 +644,7 @@ bool Sema::BuildCXXNestedNameSpecifier(S<br>
   // public:<br>
   //   void foo() { D::foo2(); }<br>
   // };<br>
-  if (getLangOpts().MicrosoftExt) {<br>
+  if (getLangOpts().MicrosoftMode) {<br>
     DeclContext *DC = LookupCtx ? LookupCtx : CurContext;<br>
     if (DC->isDependentContext() && DC->isFunctionOrMethod()) {<br>
       SS.Extend(Context, &Identifier, IdentifierLoc, CCLoc);<br>
<br>
Modified: cfe/trunk/test/SemaTemplate/lookup-dependent-bases.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaTemplate/lookup-dependent-bases.cpp?rev=191095&r1=191094&r2=191095&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaTemplate/lookup-dependent-bases.cpp?rev=191095&r1=191094&r2=191095&view=diff</a><br>

==============================================================================<br>
--- cfe/trunk/test/SemaTemplate/lookup-dependent-bases.cpp (original)<br>
+++ cfe/trunk/test/SemaTemplate/lookup-dependent-bases.cpp Fri Sep 20 12:04:25 2013<br>
@@ -1,4 +1,4 @@<br>
-// RUN: %clang_cc1 -fms-extensions -fsyntax-only -verify %s<br>
+// RUN: %clang_cc1 -fms-compatibility -fsyntax-only -verify %s<br>
 // expected-no-diagnostics<br>
<br>
 class C {<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br></div></div>