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