I have used all kinds of mingw ports - msys, mingw-w64, tdm, nuwen, msys2.
And I highly recommend msys2 if you want mingw. It comes with pacman package manager (from ArchLinux), so you can keep gcc/clang installation up to date and also install additional FOSS utilities if you want (including gdb and more).
I tried msys2 a while ago, but I use symlinks to keep my dotfiles (.vimrc, .gitconfig, etc..) up to date and msys2 doesn't have good support for them. I'm just curious, have you found a way to work with these files reliably under msys2? Or do you just overwrite them after updating?
To clarify, I keep all my config files in a repository, cloned locally in a 'dotfiles' folder. I have a setup script that sets up the symlinks for the first time (~/.dotfiles/vim/vimrc -> ~/.vimrc, ~/.dotfiles/git/gitconfig -> ~/.gitconfig, etc...) and then I can keep changing the files in the repository and everything is kept up to date without running the setup script again.