Speaking for myself here but I can only wholeheartedly discourage anyone from listening to the OP on this matter.
We (as in our own little company) are working with MinGW since years and have had no problems yet.
Not sure what yours is.
The resulting binaries (at least in our case) are neither slower nor faster.
The compiler syntax is much more comfortable as you need only one across all platforms. No need to waste time trying to figure out how to "translate" compiler and linker flags.
Your code will run across all platforms without any changes (MinGW is, partly, even more agressive in its adherence to official standards than "normal" GNU). The fact that MSVC usually compiles with less warnings, errors, etc. is not that it is better. It just willingly ignores many rules of the C++ standard. If that makes you feel better, alright. But be advised that this makes code go boom if brought onto other platforms.
You do not need another layer on top of your software cake for compiler management, like CMake. We have one NetBeans project that works across all our target platforms. That can also be done with QtCreator, etc.
You do not rely on Microsoft products (heck, even Windows can be skipped but that makes testing pretty hard). Believe it or not, but not relying on purely profit-driven companies makes us and many others feel much, much better.
If you write code that is actually cross-platform code, and use libraries that are actually cross-platform libraries, you will not have any problems. Use stuff that only works on Windows, then port to another platform and you will land in the hell you asked for. You will get problems, but that is not the fault of MinGW, it is the result of not writing proper cross-platform code in the first place.
Just as an example for that last point, I was working on porting a library to MinGW that was obviously written for Windows first. The mere fact that I had to "port" it with A LOT OF effort shows that the original developers were coding with the typical MS mindset. "I don't care about anything but this very machine." Then some customer with a proper hatred for MS wanted a MinGW version and I was asked to help. It took me two months (that lib was pretty big) as I had to replace some libraries and a lot of code that would never work on any platform except Windows (as it was just not conforming to any official standards).
Had the developer taken just a bit more time to setup a proper cross platform pipeline, all of this work could have been spent on something useful.
Btw. said developer was, at the same time, porting his lib onto OSX and basically told me all of that above paragraph while doing so. Called himself short-sighted, and I can only agree.
Of course, if you develop software only for Windows (why would anyone do that when not forced to?), the list gets much smaller. MinGW's biggest plus is that it makes cross-platform development so much easier. You can develop on Linux most of the time (which is like 20-50% faster than Windows by default), and just move to Windows from time to time for upgrading libs and testing. I am SO MUCH MORE productive when working on Linux doing exactly the same things I do on Windows, I loathe that I have to use Windows so often for many games.
Many people come into contact with MinGW first via Code::Blocks.
THAT thing is hell and usually comes with an outdated MinGW version. Also, it is just a plain bad IDE when compared with almost any other. When I first started to code, I was using CodeBlocks. And hated it. I then moved to VS and it was okay. After some years, I had a look at NetBeans and QtCreator and never looked back. Oh, how I wish that someone would have told me about them earlier.
We prefer NetBeans by now, but I know some people also like to work with Eclipse or QtCreator or KDevelop or.... you get the idea. No need for Visual "I am so slow and Intellisense constantly collapses. Please BUY Visual Assist to make me useful. Also, please give me all your data. Register here. Kthxbye" Studio.
There is no DirectX11 with MinGW. But who cares? OpenGL can do anything just as well. Maybe except the most bleeding edge techs, but at least for games, nobody should implement those as nobody will be able to use those
. Plus, you have graphics code that will instantly work on other platforms as well. With only minor adjustments required for mobile (if anyone honestly wants to argue Windows Phone
Developing "the MS way" educates people in a way that makes them expect that everything just needs to be downloaded and plugged in (aka linked against) and magically works. I have talked to people that have been programming for longer than I do and do you think they were able to tell me how a compiler and linker works? Nope. "You just have to type this here in the linker settings, then it works..." is the kind of answer I got from SOME of them. When a problem arose from some incompatibility in prebuilt downloaded binaries, was it them who could solve it? No, it was the guy who knew some typical pitfalls of DLL hell.
I swear, MS tries to make your life so easy, it will actively make you learn much less if you don't watch out.