From 7b23fec54e2fec0678c0806e255a00a1c97be46b Mon Sep 17 00:00:00 2001 From: thegeorg Date: Mon, 7 Mar 2022 13:20:48 +0300 Subject: Fix -Wpragma-pack in trie.h `#include ` and `#include ` modify current `#pragma pack` value and thus trigger `-Wpragma-pack` under clang-cl. As there is no way to implement packed structs via attributes, introduce proper compiler-specific variables in `` and use them to check whether we are compiling with MSVC. ref:e47cdb9c38eb305b9c5bcc5ad719e21ec52eb14c --- util/system/compiler.h | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/util/system/compiler.h b/util/system/compiler.h index b373edcc466..ba8ea4e3b70 100644 --- a/util/system/compiler.h +++ b/util/system/compiler.h @@ -1,5 +1,17 @@ #pragma once +#if defined(_MSC_VER) && defined(__clang__) + #define _compiler_clang_cl_ +#elif defined(_MSC_VER) + #define _compiler_msvc_ +#elif defined(__clang__) + #define _compiler_clang_ +#elif defined(__GNUC__) + #define _compiler_gcc_ +#else + #warning("Current compiler is not supported by " __FILE__) +#endif + #if defined(_MSC_VER) #include #endif @@ -157,7 +169,7 @@ #define Y_UNLIKELY(Cond) (Cond) #endif -#ifdef __GNUC__ +#if defined(_compiler_clang_) || defined(_compiler_clang_cl_) || defined(_compiler_gcc_) #define Y_PACKED __attribute__((packed)) #else #define Y_PACKED -- cgit v1.3