16#if !defined(FEAT_COMPILER) && defined(__GNUC__)
19#define FEAT_COMPILER_GNU (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
22#define FEAT_COMPILER ("g++ (GCC) " FEAT_STRINGIFY(__GNUC__) "." FEAT_STRINGIFY(__GNUC_MINOR__) "." FEAT_STRINGIFY(__GNUC_PATCHLEVEL__))
24#if(FEAT_COMPILER_GNU >= 40900)
25# define FEAT_PRAGMA_IVDEP _Pragma("GCC ivdep")
29#if(FEAT_COMPILER_GNU >= 50000)
30#define FEAT_DISABLE_WARNINGS _Pragma("GCC diagnostic push") \
31 _Pragma("GCC diagnostic ignored \"-Wunused-variable\"") \
32 _Pragma("GCC diagnostic ignored \"-Wunused-parameter\"") \
33 _Pragma("GCC diagnostic ignored \"-Wundef\"") \
34 _Pragma("GCC diagnostic ignored \"-Wstrict-aliasing\"") \
35 _Pragma("GCC diagnostic ignored \"-Wparentheses\"") \
36 _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") \
37 _Pragma("GCC diagnostic ignored \"-Wshadow\"") \
38 _Pragma("GCC diagnostic ignored \"-Wsuggest-override\"") \
39 _Pragma("GCC diagnostic ignored \"-Wdouble-promotion\"") \
40 _Pragma("GCC diagnostic ignored \"-Wpedantic\"") \
41 _Pragma("GCC diagnostic ignored \"-Wignored-qualifiers\"") \
42 _Pragma("GCC diagnostic ignored \"-Wduplicated-branches\"")
43 _Pragma(
"GCC diagnostic ignored \"-Walloc-size-larger-than=\"")
45#define FEAT_DISABLE_WARNINGS _Pragma("GCC diagnostic push") \
46 _Pragma("GCC diagnostic ignored \"-Wunused-variable\"") \
47 _Pragma("GCC diagnostic ignored \"-Wunused-parameter\"") \
48 _Pragma("GCC diagnostic ignored \"-Wundef\"") \
49 _Pragma("GCC diagnostic ignored \"-Wstrict-aliasing\"") \
50 _Pragma("GCC diagnostic ignored \"-Wparentheses\"") \
51 _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") \
52 _Pragma("GCC diagnostic ignored \"-Wshadow\"") \
53 _Pragma("GCC diagnostic ignored \"-Wdouble-promotion\"") \
54 _Pragma("GCC diagnostic ignored \"-Wpedantic\"") \
55 _Pragma("GCC diagnostic ignored \"-Wignored-qualifiers\"")
58#define FEAT_RESTORE_WARNINGS _Pragma("GCC diagnostic pop")
61#define NOINLINE __attribute__((noinline))
63#define FORCE_INLINE inline __attribute__((always_inline))