<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Nov 11, 2015 at 7:36 AM, Tim Northover <span dir="ltr"><<a href="mailto:t.p.northover@gmail.com" target="_blank">t.p.northover@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">On 11 November 2015 at 07:03, michael zuckerman<br>
<span class=""><<a href="mailto:michael.zuckerman@intel.com">michael.zuckerman@intel.com</a>> wrote:<br>
> I am not familiar with any libraries that contain these “relaxations”. Never the less Microsoft supports these “relaxations”. If we want LLVM to be compatible with Microsoft like GAS, we need to add this feature.<br>
<br>
</span>Our compatibility with GAS isn't absolute either. For example we've<br>
taken a conscious decision on ARM not to actively support the legacy<br>
assembly syntax.<br>
<span class=""><br>
> I don’t think that “just tell users to fix their code” is the correct approach<br>
<br>
</span>Like Reid, I do.<br></blockquote><div><br></div><div>Our compatibility policy used to draw the line at whatever is necessary to parse system headers, and we included all MS SDK headers in this category. I've argued that we should expand it a little bit to include popular cargo-culted idioms of the platform to help ease the burden of transition for our users. It's not clear to me that the invalid code you are trying to accept is widespread.</div><div><br></div><div>What would change my mind is evidence that it is widespread:</div><div>- Inline assembly with this problem is in windows.h or some other Microsoft SDK headers (DirectX, ATL, whatever) </div><div>- Multiple popular open source projects that rely on this functionality (say, Boost, ffmpeg, etc)</div><div><br></div><div>There's lots of other open issues that you can work on that will actually help users in a meaningful way. Yesterday I ran into code like this that does not compile:</div><div>struct A {</div><div>  void f() {</div><div>    __asm mov eax, this</div><div>    // error: expected unqualified-id<br></div><div>  }</div><div>};</div></div></div></div>