aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/c2x-enum-3.c
blob: 191001dc281ee454032a2deae4edc7fe8e03e0e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* Test C23 enumerations with values not representable in int.  Test values
   outside the range of standard or extended integer types are diagnosed,
   when __int128 is unsupported.  */
/* { dg-do compile { target { ! int128 } } } */
/* { dg-options "-std=c23 -pedantic-errors" } */

enum e1 { e1a = __LONG_LONG_MAX__, e1b }; /* { dg-error "overflow in enumeration values" } */

enum e2 { e2a = __LONG_LONG_MAX__ * 2ULL + 1ULL, e2b }; /* { dg-error "overflow in enumeration values" } */

/* Likewise, when it's the enum as a whole that can't fit in any standard or
   extended type, but the individual enumerators fit (some fitting a signed
   type and some fitting an unsigned type).  */
enum e3 { e3a = -__LONG_LONG_MAX__ - 1, e3b = __LONG_LONG_MAX__ * 2ULL + 1ULL }; /* { dg-error "enumeration values exceed range of largest integer" } */