diff --git a/source/creator/creator.c b/source/creator/creator.c index 70e6aba8274..412ff374233 100644 --- a/source/creator/creator.c +++ b/source/creator/creator.c @@ -41,6 +41,9 @@ #endif #ifdef WIN32 +# if defined(_MSC_VER) && _MSC_VER >= 1800 && defined(_M_X64) +# include /* needed for _set_FMA3_enable */ +# endif # include # include "utfconv.h" #endif @@ -1501,7 +1504,13 @@ int main( bArgs *ba; #endif -#ifdef WIN32 /* Win32 Unicode Args */ +#ifdef WIN32 + /* FMA3 support in the 2013 CRT is broken on Vista and Windows 7 RTM (fixed in SP1). Just disable it. */ +# if defined(_MSC_VER) && _MSC_VER >= 1800 && defined(_M_X64) + _set_FMA3_enable(0); +# endif + + /* Win32 Unicode Args */ /* NOTE: cannot use guardedalloc malloc here, as it's not yet initialized * (it depends on the args passed in, which is what we're getting here!) */