1 /* Test TS 18661-1 width macros in <limits.h>. */
2 /* { dg-do compile } */
3 /* { dg-options "-std=c11" } */
5 #define __STDC_WANT_IEC_60559_BFP_EXT__
8 #define CHECK_WIDTH(TYPE, MAX, WIDTH) \
9 _Static_assert ((MAX >> ((TYPE) -1 < 0 ? (WIDTH - 2) : (WIDTH - 1))) == 1, \
10 "width must match type")
13 # error "missing CHAR_WIDTH"
15 CHECK_WIDTH (char, CHAR_MAX
, CHAR_WIDTH
);
17 # error "missing SCHAR_WIDTH"
19 CHECK_WIDTH (signed char, SCHAR_MAX
, SCHAR_WIDTH
);
21 # error "missing UCHAR_WIDTH"
23 CHECK_WIDTH (unsigned char, UCHAR_MAX
, UCHAR_WIDTH
);
25 # error "missing SHRT_WIDTH"
27 CHECK_WIDTH (signed short, SHRT_MAX
, SHRT_WIDTH
);
29 # error "missing USHRT_WIDTH"
31 CHECK_WIDTH (unsigned short, USHRT_MAX
, USHRT_WIDTH
);
33 # error "missing INT_WIDTH"
35 CHECK_WIDTH (signed int, INT_MAX
, INT_WIDTH
);
37 # error "missing UINT_WIDTH"
39 CHECK_WIDTH (unsigned int, UINT_MAX
, UINT_WIDTH
);
41 # error "missing LONG_WIDTH"
43 CHECK_WIDTH (signed long, LONG_MAX
, LONG_WIDTH
);
45 # error "missing ULONG_WIDTH"
47 CHECK_WIDTH (unsigned long, ULONG_MAX
, ULONG_WIDTH
);
49 # error "missing LLONG_WIDTH"
51 CHECK_WIDTH (signed long long, LLONG_MAX
, LLONG_WIDTH
);
53 # error "missing ULLONG_WIDTH"
55 CHECK_WIDTH (unsigned long long, ULLONG_MAX
, ULLONG_WIDTH
);