From 6e1d02f1f04f9c255108f84cc788b709e7871c2e Mon Sep 17 00:00:00 2001 From: Yann Collet Date: Wed, 5 Feb 2025 12:06:14 -0800 Subject: [PATCH 1/3] adding a Visual + ClangCL + AVX2 compilation test --- .github/workflows/dev-short-tests.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/dev-short-tests.yml b/.github/workflows/dev-short-tests.yml index 8648d777e..26c175994 100644 --- a/.github/workflows/dev-short-tests.yml +++ b/.github/workflows/dev-short-tests.yml @@ -362,6 +362,8 @@ jobs: - generator: "MinGW Makefiles" - generator: "Visual Studio 17 2022" flags: "-T ClangCL" + - generator: "Visual Studio 17 2022" + flags: "-T ClangCL -A x64 -DCMAKE_C_FLAGS=/arch:AVX2" runs-on: windows-2022 steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 From bcf404c0ab73cb6cc822a1412b78ba7965f9d74d Mon Sep 17 00:00:00 2001 From: Yann Collet Date: Wed, 5 Feb 2025 13:25:14 -0800 Subject: [PATCH 2/3] changed C11 keyword to _Alignas so that it doesn't depend on #include --- lib/common/compiler.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/common/compiler.h b/lib/common/compiler.h index 5ad212383..66792463b 100644 --- a/lib/common/compiler.h +++ b/lib/common/compiler.h @@ -305,7 +305,7 @@ MEM_STATIC int ZSTD_isPower2(size_t u) { # if defined(__GNUC__) # define ZSTD_ALIGNED(a) __attribute__((aligned(a))) # elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) /* C11 */ -# define ZSTD_ALIGNED(a) alignas(a) +# define ZSTD_ALIGNED(a) _Alignas(a) #elif defined(_MSC_VER) # define ZSTD_ALIGNED(n) __declspec(align(n)) # else From 54e9d46db44c4832d031100800f54a397358f896 Mon Sep 17 00:00:00 2001 From: Yann Collet Date: Wed, 5 Feb 2025 13:48:24 -0800 Subject: [PATCH 3/3] added __clang__ to compiler-specific alignment attribute when clang is used within msvc, `__GNUC__` isn't defined, so testing `__clang__` explicitly is required. --- lib/common/compiler.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/common/compiler.h b/lib/common/compiler.h index 66792463b..1f7da50e6 100644 --- a/lib/common/compiler.h +++ b/lib/common/compiler.h @@ -302,7 +302,7 @@ MEM_STATIC int ZSTD_isPower2(size_t u) { #ifndef ZSTD_ALIGNED /* C90-compatible alignment macro (GCC/Clang). Adjust for other compilers if needed. */ -# if defined(__GNUC__) +# if defined(__GNUC__) || defined(__clang__) # define ZSTD_ALIGNED(a) __attribute__((aligned(a))) # elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) /* C11 */ # define ZSTD_ALIGNED(a) _Alignas(a)