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\"")
 
   44#define FEAT_DISABLE_WARNINGS _Pragma("GCC diagnostic push") \
 
   45  _Pragma("GCC diagnostic ignored \"-Wunused-variable\"") \
 
   46  _Pragma("GCC diagnostic ignored \"-Wunused-parameter\"") \
 
   47  _Pragma("GCC diagnostic ignored \"-Wundef\"") \
 
   48  _Pragma("GCC diagnostic ignored \"-Wstrict-aliasing\"") \
 
   49  _Pragma("GCC diagnostic ignored \"-Wparentheses\"") \
 
   50  _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") \
 
   51  _Pragma("GCC diagnostic ignored \"-Wshadow\"") \
 
   52  _Pragma("GCC diagnostic ignored \"-Wdouble-promotion\"") \
 
   53  _Pragma("GCC diagnostic ignored \"-Wpedantic\"") \
 
   54  _Pragma("GCC diagnostic ignored \"-Wignored-qualifiers\"")
 
   57#define FEAT_RESTORE_WARNINGS _Pragma("GCC diagnostic pop")
 
   60#define NOINLINE __attribute__((noinline)) 
   62#define FORCE_INLINE inline __attribute__((always_inline))