<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Jan 15, 2014 at 11:42 AM, Nico Weber <span dir="ltr"><<a href="mailto:thakis@chromium.org" target="_blank">thakis@chromium.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><div class="h5">On Wed, Jan 15, 2014 at 3:17 AM, Alp Toker <span dir="ltr"><<a href="mailto:alp@nuanti.com" target="_blank">alp@nuanti.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

  
    
  
  <div bgcolor="#FFFFFF" text="#000000"><div><div>
    <br>
    <div>On 15/01/2014 05:59, Nico Weber wrote:<br>
    </div>
    <blockquote type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">On Tue, Jan 14, 2014 at 11:13 AM, Alp
            Toker <span dir="ltr"><<a href="mailto:alp@nuanti.com" target="_blank">alp@nuanti.com</a>></span>
            wrote:<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
              Modified: cfe/trunk/include/clang/Driver/Options.td<br>
              URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=199247&r1=199246&r2=199247&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=199247&r1=199246&r2=199247&view=diff</a><br>


==============================================================================<br>
              --- cfe/trunk/include/clang/Driver/Options.td (original)<br>
              +++ cfe/trunk/include/clang/Driver/Options.td Tue Jan 14
              13:13:00 2014<br>
              @@ -575,9 +575,9 @@ def fmessage_length_EQ :
              Joined<["-"], "<br>
               def fms_extensions : Flag<["-"], "fms-extensions">,
              Group<f_Group>, Flags<[CC1Option]>,<br>
                 HelpText<"Accept some non-standard constructs
              supported by the Microsoft compiler">;<br>
               def fms_compatibility : Flag<["-"],
              "fms-compatibility">, Group<f_Group>,
              Flags<[CC1Option]>,<br>
              -  HelpText<"Enable Microsoft compatibility mode">;<br>
              +  HelpText<"Enable full Microsoft Visual C++
              compatibility">;<br>
            </blockquote>
            <div><br>
            </div>
            <div>Isn't "full" too strong? I thought this was more
              "enough to parse ms sdk headers and link to mscrt", not
              "full" compatibility.</div>
          </div>
        </div>
      </div>
    </blockquote>
    <br></div></div>
    It isn't perfect, but we ran through a lot of options and this is
    the only one that standard.<br><br></div></blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000">
    That's why we'd do well to move away from the "ms sdk header"
    wording (even if it's the current goal).<br></div></blockquote><div><br></div></div></div><div>Yeah. With the "full compat" text, I'm afraid that people will keep doing this and file bugs on clang if their code doesn't build with -fms-compat even though it builds with cl.</div>
</div></div></div></blockquote><div><br></div><div>I think "full" here is OK.  In general, I *want* people to file bugs if there code compiles with cl and not clang -fms-compatibility, but I agree there are limits to how compatible we can be.  There are some areas where we can never be compatible, and we'll have to close them with wontfix / infeasible.  Users should be able to understand that.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div class="im"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">I think it's about right now, but suggestions on the back of a
    postcard welcome.<br></div></blockquote><div><br></div></div><div>To me the difference between -fms-extensions and -ms-compat is that the first enables some relatively harmless things, while the latter enables things that actively contradict the standard, so I'd try to express this in the help text somehow.</div>
</div></div></div></blockquote><div><br></div><div>The C++ ABI also implies lots of non-standards compliant behavior.  For example, member pointers use a completely different model.  Inheriting from two bases that override a method in a shared virtual base with different covariant return types also doesn't work.  And those are just the ones I can think of at the moment.  :)</div>
</div></div></div>