https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94570
--- Comment #9 from jon_y <10walls at gmail dot com> --- if defined(__MSDOS__) || (defined(_WIN32) && ! defined(__CYGWIN__) || defined(__OS2__) I've tested the above and confirmed that coverage.ii does have the correct separator after updating filenames.h. Cygwin may define _WIN32 if win32api headers are included, but mingw will never define __CYGWIN__.