4#ifndef ZIP7_INC_COMPILER_H
5#define ZIP7_INC_COMPILER_H
8# define Z7_CLANG_VERSION (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__)
10#if defined(__clang__) && defined(__apple_build_version__)
11# define Z7_APPLE_CLANG_VERSION Z7_CLANG_VERSION
12#elif defined(__clang__)
13# define Z7_LLVM_CLANG_VERSION Z7_CLANG_VERSION
14#elif defined(__GNUC__)
15# define Z7_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
19#if !defined(__clang__) && !defined(__GNUC__)
20#define Z7_MSC_VER_ORIGINAL _MSC_VER
24#if defined(__MINGW32__) || defined(__MINGW64__)
28#if defined(__LCC__) && (defined(__MCST__) || defined(__e2k__))
30#define Z7_MCST_LCC_VERSION (__LCC__ * 100 + __LCC_MINOR__)
49#pragma GCC diagnostic ignored "-Wpadded"
51#if defined(Z7_LLVM_CLANG_VERSION) && (__clang_major__ == 13) \
52 && defined(__FreeBSD__)
54#pragma GCC diagnostic ignored "-Wexcess-padding"
57#if __clang_major__ >= 16
58#pragma GCC diagnostic ignored "-Wunsafe-buffer-usage"
61#if __clang_major__ == 13
62#if defined(__SIZEOF_POINTER__) && (__SIZEOF_POINTER__ == 16)
64#pragma GCC diagnostic ignored "-Wcapability-to-integer-cast"
68#if __clang_major__ == 13
70 #pragma GCC diagnostic ignored "-Wreserved-identifier"
75#if defined(_WIN32) && defined(__clang__) && __clang_major__ >= 16
77#define Z7_DIAGNOSTIC_IGNORE_CAST_FUNCTION \
78 _Pragma("GCC diagnostic ignored \"-Wcast-function-type-strict\"")
80#define Z7_DIAGNOSTIC_IGNORE_CAST_FUNCTION
84#if defined(__clang__) || defined(__GNUC__)
85#define Z7_CAST_FUNC_C (Z7_void_Function)
86#elif defined(_MSC_VER) && _MSC_VER > 1920
87#define Z7_CAST_FUNC_C (void *)
98#if defined(Z7_GCC_VERSION) && (Z7_GCC_VERSION >= 40000) && (Z7_GCC_VERSION < 70000)
99#pragma GCC diagnostic ignored "-Wstrict-aliasing"
107 #define RPC_NO_WINDOWS_H
109 #pragma warning(disable : 4201)
110 #pragma warning(disable : 4214)
113#if defined(_MSC_VER) && _MSC_VER >= 1800
114#pragma warning(disable : 4464)
119#pragma warning(disable : 4710)
123#pragma warning(disable : 4514)
129#pragma warning(disable : 4714)
143#pragma warning(disable : 4711)
144#pragma warning(disable : 4820)
146#if _MSC_VER >= 1400 && _MSC_VER < 1920
150#pragma warning(disable : 4668)
155#pragma warning(disable : 4255)
160#pragma warning(disable : 5045)
167#if defined(__clang__) && (__clang_major__ >= 4)
168 #define Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE \
169 _Pragma("clang loop unroll(disable)") \
170 _Pragma("clang loop vectorize(disable)")
171 #define Z7_ATTRIB_NO_VECTORIZE
172#elif defined(__GNUC__) && (__GNUC__ >= 5) \
173 && (!defined(Z7_MCST_LCC_VERSION) || (Z7_MCST_LCC_VERSION >= 12610))
174 #define Z7_ATTRIB_NO_VECTORIZE __attribute__((optimize("no-tree-vectorize")))
176 #define Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE
177#elif defined(_MSC_VER) && (_MSC_VER >= 1920)
178 #define Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE \
179 _Pragma("loop( no_vector )")
180 #define Z7_ATTRIB_NO_VECTORIZE
182 #define Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE
183 #define Z7_ATTRIB_NO_VECTORIZE
186#if defined(MY_CPU_X86_OR_AMD64) && ( \
187 defined(__clang__) && (__clang_major__ >= 4) \
188 || defined(__GNUC__) && (__GNUC__ >= 5))
189 #define Z7_ATTRIB_NO_SSE __attribute__((__target__("no-sse")))
191 #define Z7_ATTRIB_NO_SSE
194#define Z7_ATTRIB_NO_VECTOR \
195 Z7_ATTRIB_NO_VECTORIZE \
199#if defined(__clang__) && (__clang_major__ >= 8) \
200 || defined(__GNUC__) && (__GNUC__ >= 1000) \
203 #define Z7_LIKELY(x) (__builtin_expect((x), 1))
204 #define Z7_UNLIKELY(x) (__builtin_expect((x), 0))
208 #define Z7_LIKELY(x) (x)
209 #define Z7_UNLIKELY(x) (x)
214#if (defined(Z7_CLANG_VERSION) && (Z7_CLANG_VERSION >= 30600))
216#if (Z7_CLANG_VERSION < 130000)
217#define Z7_DIAGNOSTIC_IGNORE_BEGIN_RESERVED_MACRO_IDENTIFIER \
218 _Pragma("GCC diagnostic push") \
219 _Pragma("GCC diagnostic ignored \"-Wreserved-id-macro\"")
221#define Z7_DIAGNOSTIC_IGNORE_BEGIN_RESERVED_MACRO_IDENTIFIER \
222 _Pragma("GCC diagnostic push") \
223 _Pragma("GCC diagnostic ignored \"-Wreserved-macro-identifier\"")
226#define Z7_DIAGNOSTIC_IGNORE_END_RESERVED_MACRO_IDENTIFIER \
227 _Pragma("GCC diagnostic pop")
229#define Z7_DIAGNOSTIC_IGNORE_BEGIN_RESERVED_MACRO_IDENTIFIER
230#define Z7_DIAGNOSTIC_IGNORE_END_RESERVED_MACRO_IDENTIFIER
233#define UNUSED_VAR(x) (void)x;
void(* Z7_void_Function)(void)
Definition Compiler.h:83