Merge pull request 'fix vendored libdeflate _rotr* macros vs mingw stdlib.h' (#1) from fix/mingw-rotr64-stdlib-collision into master

Reviewed-on: #1
This commit is contained in:
jorijnvdgraaf 2026-05-27 04:28:36 +02:00
commit e70cc9212b

View file

@ -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 <stdlib.h> 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 <stdlib.h> would see the
* function declarations mangled by these macros. Force <stdlib.h> 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 <stdlib.h>
#endif
#ifndef _rotr16
#define _rotr16(x,n) ((x>>n) + (x<<(16-n)))
#endif