diff options
Diffstat (limited to 'gcc/testsuite/gcc.c-torture/execute/enum-2.c')
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/enum-2.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/execute/enum-2.c b/gcc/testsuite/gcc.c-torture/execute/enum-2.c new file mode 100644 index 000000000..dd6f64086 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/enum-2.c @@ -0,0 +1,22 @@ +/* Copyright (C) 2000 Free Software Foundation */ +/* by Alexandre Oliva <aoliva@redhat.com> */ + +enum foo { FOO, BAR }; + +/* Even though the underlying type of an enum is unspecified, the type + of enumeration constants is explicitly defined as int (6.4.4.3/2 in + the C99 Standard). Therefore, `i' must not be promoted to + `unsigned' in the comparison below; we must exit the loop when it + becomes negative. */ + +int +main () +{ + int i; + for (i = BAR; i >= FOO; --i) + if (i == -1) + abort (); + + exit (0); +} + |