__GNUC_PREREQ__
#if __GNUC_PREREQ__(3, 3) || (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 800)
#if __GNUC_PREREQ__(3, 0) && !defined(__INTEL_COMPILER)
#elif __GNUC_PREREQ__(3, 1) && !defined(__cplusplus)
#if !__GNUC_PREREQ__(2, 5) && !defined(__INTEL_COMPILER)
#if __GNUC_PREREQ__(2, 7) || defined(__INTEL_COMPILER)
#if __GNUC_PREREQ__(4, 3) || __has_attribute(__alloc_size__)
#if __GNUC_PREREQ__(4, 9) || __has_attribute(__alloc_align__)
#if !__GNUC_PREREQ__(2, 95)
#elif __GNUC_PREREQ__(4,6)
#elif __GNUC_PREREQ__(3, 1) && !defined(__cplusplus)
#if __GNUC_PREREQ__(2, 96)
#if __GNUC_PREREQ__(3, 1) || (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 800)
#if __GNUC_PREREQ__(3, 1)
#if __GNUC_PREREQ__(3, 3)
#if __GNUC_PREREQ__(3, 4)
#if __GNUC_PREREQ__(4, 1)
#if __GNUC_PREREQ__(4, 6) || __has_builtin(__builtin_unreachable)
#if !__GNUC_PREREQ__(2, 7) && !defined(__INTEL_COMPILER)
#if __GNUC_PREREQ__(2, 96)
#if __GNUC_PREREQ__(4, 0)
#if __GNUC_PREREQ__(4, 1)
#if __GNUC_PREREQ__(3, 1)
#if !__GNUC_PREREQ__(2, 7) && !defined(__INTEL_COMPILER)
#if __GNUC_PREREQ__(4, 3) || __has_attribute(__artificial__)
#elif __GNUC_PREREQ__(4,6)
#if __GNUC_PREREQ__(4, 1)