diff --git a/lib/gdeflate/libdeflate/common/compiler_gcc.h b/lib/gdeflate/libdeflate/common/compiler_gcc.h index 18147a2..b3f998c 100644 --- a/lib/gdeflate/libdeflate/common/compiler_gcc.h +++ b/lib/gdeflate/libdeflate/common/compiler_gcc.h @@ -203,7 +203,19 @@ typedef char __v64qi __attribute__((__vector_size__(64))); /* * Setup rotation macros similar to MSVS intrinsics. * These should recognized by compilers. + * + * mingw's declares _rotl/_rotr/_rotl64/_rotr64 as functions, so + * a translation unit that pulls compiler_gcc.h in first (libdeflate's own + * utils.c does exactly that) and then includes would see the + * function declarations mangled by these macros. Force in here + * on mingw so the declarations get parsed before the macro names get + * shadowed; the header guard makes the later #include a no-op and call + * sites still resolve to the macros below. */ +#if defined(__MINGW32__) || defined(__MINGW64__) +# include +#endif + #ifndef _rotr16 #define _rotr16(x,n) ((x>>n) + (x<<(16-n))) #endif