1/* Various macros for -fsanitize=float-cast-overflow testing. */ 2 3/* E.g. on CentOS 5 these aren't defined in limits.h. */ 4#ifndef LLONG_MAX 5# define LLONG_MAX __LONG_LONG_MAX__ 6#endif 7#ifndef LLONG_MIN 8# define LLONG_MIN (-__LONG_LONG_MAX__ - 1LL) 9#endif 10#ifndef ULLONG_MAX 11# define ULLONG_MAX (__LONG_LONG_MAX__ * 2ULL + 1ULL) 12#endif 13 14#define INT128_MAX (__int128) (((unsigned __int128) 1 << ((__SIZEOF_INT128__ * __CHAR_BIT__) - 1)) - 1) 15#define INT128_MIN (-INT128_MAX - 1) 16#define UINT128_MAX ((2 * (unsigned __int128) INT128_MAX) + 1) 17 18#define CHECK_BOUNDARY(VAR, VAL) \ 19 (VAR) = (VAL) - 5.0; \ 20 (VAR) = (VAL) - 1.5; \ 21 (VAR) = (VAL) - 1.0; \ 22 (VAR) = (VAL) - 0.75; \ 23 (VAR) = (VAL) - 0.5; \ 24 (VAR) = (VAL) - 0.0000001; \ 25 (VAR) = (VAL) - 0.0; \ 26 (VAR) = (VAL); \ 27 (VAR) = (VAL) + 0.0; \ 28 (VAR) = (VAL) + 0.0000001; \ 29 (VAR) = (VAL) + 0.5; \ 30 (VAR) = (VAL) + 0.75; \ 31 (VAR) = (VAL) + 1.0; \ 32 (VAR) = (VAL) + 1.5; \ 33 (VAR) = (VAL) + 5.0; 34 35#define CHECK_NONNUMBERS(VAR) \ 36 (VAR) = nan; \ 37 (VAR) = -nan; \ 38 (VAR) = inf; \ 39 (VAR) = -inf; 40