diff options
Diffstat (limited to 'gcc/testsuite/gcc.dg/enum1.c')
-rw-r--r-- | gcc/testsuite/gcc.dg/enum1.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/enum1.c b/gcc/testsuite/gcc.dg/enum1.c new file mode 100644 index 000000000..0f4587ff6 --- /dev/null +++ b/gcc/testsuite/gcc.dg/enum1.c @@ -0,0 +1,23 @@ +/* { dg-do run } */ +/* { dg-options "-std=gnu89" } */ + +/* In standard C, enumeration constants always have type int. If they + are not representables are int, they're ill-formed. In GNU C, we + give such ill-formed constructs well-defined meaning. Make sure it + works. */ + +#include <stdlib.h> + +enum foo +{ + foo1 = 0, + foo2 = 0xffffffffffffffffULL, + foo3 = 0xf0fffffffffffffeULL +}; + +int main () +{ + if (sizeof (enum foo) != sizeof (unsigned long long)) + abort (); + exit (0); +} |