From: Nathan Moinvaziri Date: Fri, 26 Jun 2020 07:25:45 +0000 (-0700) Subject: Clean up header includes for Win32 and ARM. X-Git-Tag: 1.9.9-b1~173 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=72eebfec843bdc5d8ea1db90487267301ad2ceb5;p=thirdparty%2Fzlib-ng.git Clean up header includes for Win32 and ARM. Fixed MSVC compiler warning in storechunk for ARM Neon. Fixed arm_neon.h include for memchunk for ARM Neon. --- diff --git a/arch/arm/crc32_acle.c b/arch/arm/crc32_acle.c index 581bad160..8c29577a5 100644 --- a/arch/arm/crc32_acle.c +++ b/arch/arm/crc32_acle.c @@ -6,15 +6,11 @@ */ #ifdef ARM_ACLE_CRC_HASH -# include -# ifdef ZLIB_COMPAT -# include -# else -# include -# endif -# ifdef __linux__ -# include -# endif +#ifndef _MSC_VER +# include +#endif +#include "../../zbuild.h" +#include "../../zutil.h" uint32_t crc32_acle(uint32_t crc, const unsigned char *buf, uint64_t len) { register uint32_t c; @@ -36,7 +32,7 @@ uint32_t crc32_acle(uint32_t crc, const unsigned char *buf, uint64_t len) { buf4 = (const uint32_t *) buf; } -# if defined(__aarch64__) +#if defined(__aarch64__) if ((len > sizeof(uint32_t)) && ((ptrdiff_t)buf & sizeof(uint32_t))) { c = __crc32w(c, *buf4++); len -= sizeof(uint32_t); @@ -44,7 +40,7 @@ uint32_t crc32_acle(uint32_t crc, const unsigned char *buf, uint64_t len) { const uint64_t *buf8 = (const uint64_t *) buf4; -# ifdef UNROLL_MORE +#ifdef UNROLL_MORE while (len >= 4 * sizeof(uint64_t)) { c = __crc32d(c, *buf8++); c = __crc32d(c, *buf8++); @@ -52,7 +48,7 @@ uint32_t crc32_acle(uint32_t crc, const unsigned char *buf, uint64_t len) { c = __crc32d(c, *buf8++); len -= 4 * sizeof(uint64_t); } -# endif +#endif while (len >= sizeof(uint64_t)) { c = __crc32d(c, *buf8++); @@ -74,7 +70,7 @@ uint32_t crc32_acle(uint32_t crc, const unsigned char *buf, uint64_t len) { } buf = (const unsigned char *) buf2; -# else /* __aarch64__ */ +#else /* __aarch64__ */ # ifdef UNROLL_MORE while (len >= 8 * sizeof(uint32_t)) { @@ -103,7 +99,7 @@ uint32_t crc32_acle(uint32_t crc, const unsigned char *buf, uint64_t len) { } else { buf = (const unsigned char *) buf4; } -# endif /* __aarch64__ */ +#endif /* __aarch64__ */ if (len) { c = __crc32b(c, *buf); diff --git a/arch/arm/insert_string_acle.c b/arch/arm/insert_string_acle.c index 2fdbe6ffe..2daf9ba3e 100644 --- a/arch/arm/insert_string_acle.c +++ b/arch/arm/insert_string_acle.c @@ -6,7 +6,9 @@ */ #ifdef ARM_ACLE_CRC_HASH -#include +#ifndef _MSC_VER +# include +#endif #include "../../zbuild.h" #include "../../deflate.h" diff --git a/arch/arm/memchunk_neon.c b/arch/arm/memchunk_neon.c index 17c484b0f..cc165afef 100644 --- a/arch/arm/memchunk_neon.c +++ b/arch/arm/memchunk_neon.c @@ -2,14 +2,14 @@ * For conditions of distribution and use, see copyright notice in zlib.h */ -#ifndef MEMCHUNK_NEON_H_ -#define MEMCHUNK_NEON_H_ - #ifdef ARM_NEON_MEMCHUNK -#include "zbuild.h" -#include "zutil.h" - -#include +#ifdef _M_ARM64 +# include +#else +# include +#endif +#include "../../zbuild.h" +#include "../../zutil.h" typedef uint8x16_t memchunk_t; @@ -118,10 +118,15 @@ static inline void loadchunk(uint8_t const *s, memchunk_t *chunk) { } static inline void storechunk(uint8_t *out, memchunk_t *chunk) { +#ifdef _MSC_VER + /* Cast to memchunk_t pointer to avoid compiler error on MSVC ARM */ + memchunk_t *target = (memchunk_t *)chunk; + memcpy(target, &chunk, sizeof(chunk)); +#else memcpy(out, chunk, sizeof(memchunk_t)); +#endif } #include "memchunk_tpl.h" #endif -#endif diff --git a/arch/x86/memchunk_sse.c b/arch/x86/memchunk_sse.c index 4955e2963..d92198dd3 100644 --- a/arch/x86/memchunk_sse.c +++ b/arch/x86/memchunk_sse.c @@ -1,8 +1,6 @@ /* memchunk_sse.c -- SSE inline functions to copy small data chunks. * For conditions of distribution and use, see copyright notice in zlib.h */ -#ifndef MEMCHUNK_SSE_H_ -#define MEMCHUNK_SSE_H_ #include "zbuild.h" #include "zutil.h" @@ -51,4 +49,3 @@ static inline void storechunk(uint8_t *out, memchunk_t *chunk) { #include "memchunk_tpl.h" #endif -#endif diff --git a/memchunk.c b/memchunk.c index f470df8cd..1dbde6736 100644 --- a/memchunk.c +++ b/memchunk.c @@ -1,8 +1,6 @@ /* memchunk.c -- inline functions to copy small data chunks. * For conditions of distribution and use, see copyright notice in zlib.h */ -#ifndef MEMCHUNK_H_ -#define MEMCHUNK_H_ #include "zbuild.h" #include "zutil.h" @@ -69,5 +67,3 @@ static inline void storechunk(uint8_t *out, memchunk_t *chunk) { #define CHUNKMEMSET_SAFE chunkmemset_safe_c #include "memchunk_tpl.h" - -#endif