<div dir="ltr">On Tue, Aug 27, 2013 at 8:48 AM, Nico Rieck <span dir="ltr"><<a href="mailto:nico.rieck@gmail.com" target="_blank">nico.rieck@gmail.com</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"><div>On <a href="tel:27.08.2013%2016" value="+12708201316" target="_blank">27.08.2013 16</a>:55, G M wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
As can be seen by the table above, the effect of the earlier change<br>
means that some files that might have previously only compiled #if<br>
_MSC_VER are now instead getting compiled in the more general _WIN32 mode,<br>
letting clang etc. in which is a situation they aren't prepared for.<br>
</blockquote>
<br></div>
Then why not just revert to the previous state by taking Mingw out of _LIBCPP_MSVCRT (because they aren't fully compatible to the real one),<br>
and change a few guards here and there to include Mingw? I've attached a patch like that before.<br></blockquote><div><br></div><div>Ah, now I actually see what the problem is.  Yes, this seems like the right way to go.  It's unfortunate that we haven't yet figured out a better way to detect the Microsoft CRT and its headers.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

It only changes a few spots and makes a lot of your changes unnecessary. To me that seems a lot easier instead of pulling on all the workarounds not intended for Mingw.<div><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I wonder if at that time those files were written _MSC_VER might have been<br>
meant "for Microsoft's compiler only" but I don't know, But in any case, I<br>
think this is what broke the mingw/gnu toolset that I use so it no longer<br>
compiled "out of the box".<br>
</blockquote>
<br></div>
I want to ask again: How do you (or did you) compile libc++ with Mingw "out of the box"? Because if I do so, I get undefined references when linking, so can't further check up on this.<div><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I don't know the intent of the changes above and without that I<br>
personally find the new macro's more confusing than just using #if _WIN32<br>
etc. here, but I don't feel confident enough to argue that case.<br>
</blockquote>
<br></div>
The intent is stated in r187593. If you have clang and a different C standard library (I wrote one from scratch for clang) then a lot of the workarounds are unnecessary/wrong/problematic. And the latter were pulled in unnecessarily because of wrong guards. And not every Windows-specific code are compiler or standard library workarounds (though libc++ does not include anything in this category yet).<br>
</blockquote><div><br></div><div>And so you don't define _WIN32 to avoid that code?</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Regarding your patch, just a small note, there is quite a bit of noise in there (e.g. unnecessary whitespace changes). It wuold be nicer to not include those.<br>
<br>
<br>
-Nico<br>
______________________________<u></u>_________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu" target="_blank">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/<u></u>mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br></div></div>