On 10/21/2013 9:02 PM, Niall Douglas wrote:
On 21 Oct 2013 at 20:45, Edward Diener wrote:
Be aware that I found any Mingw after the one based on GCC 4.6.4 is broken with Boost in various unhelpful ways (e.g. generating assembler ops its assembler won't accept). In fact, of course, Mingw with GCC 4.6 was also broken (e.g. <atomic> does not implement actually atomic operations), but it had been around long enough people had patched for it.
Do you know Which Boost libraries are broken with MingW using gcc 4.6.4 on up ?
Mingw with GCC 4.6.4 works okay. It's what my Jenkins CI uses for Mingw pre-commit testing.
I don't see a gcc 4.6.4 on the MingW sourcforge site ( https://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/ ). There is a 4.7.0-1 and 4.7.2-1 there, which I have used.
I have tested some of my own things on trunk with MingW and gcc-4.7.0 and gcc.4.7.2 and they are testing OK, so I want to understand what Boost code is broken.
I'm sure things will be different for different people, but there was certainly a GCC 4.7.x based Mingw that forgot to feed -march=i486 to its assembler, so if you did anything needing atomic instructions it barfed.
Is there any Boost library tests of which you know that displays this problem ?
I also found a showstopping ICE with my code on a GCC 4.8.x based Mingw which kinda ruled it out for me. I went back to the GCC 4.6.4 based Mingw. It's reliable.
You should really report anything broken in MingW to their bug tracker or mention it in their mailing list. It's possible that the versions on sourceforge have already fixed the problem(s) you have seen. It's also important that users of Boost and MingW understand what may be broken using their particular release.
Mingw-w64 is absolutely fine though, and I very strongly recommend its use over traditional Mingw. Mingw-w64 was so trouble free that it just worked for me first time, which was quite a novel experience.
I will try this out also. Thanks !
My only complaint with Mingw-w64 (I used the GCC 4.8 based version) is that it dislikes the MSVC idiom of using {0} or {sizeof(struct)} to zero initialise structures. It still compiles them, but it warns and you get a ton of those warnings. You could disable just that warning, but if I remember there are instances where you really do want to see that warning. That said, they'd get lost in the noise on Mingw. Other than that, my experience was good.
Does the Boost Build gcc toolset on Windows work correctly with Mingw-w64 ? I have not had any problems with it using MingW itself with Boost Build and don't want to commit to testing against it unless Boost Build works with it.