diff options
Diffstat (limited to 'gcc-4.9/gcc/testsuite/g++.dg/other/no-strict-enum-precision-2.C')
-rw-r--r-- | gcc-4.9/gcc/testsuite/g++.dg/other/no-strict-enum-precision-2.C | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/other/no-strict-enum-precision-2.C b/gcc-4.9/gcc/testsuite/g++.dg/other/no-strict-enum-precision-2.C new file mode 100644 index 000000000..086989c51 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/other/no-strict-enum-precision-2.C @@ -0,0 +1,37 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -fno-strict-enums" } */ + +extern "C" void abort (void); + +enum X +{ + X1, + X2 +}; + +int +foo (enum X x) +{ + switch (x) + { + case X1: + return 0; + case X2: + return 1; + } + return x; +} + +int +main (int argc, char *argv[]) +{ + int n = argc + 999; + if (n == foo (static_cast < X > (n))) + { + return 0; + } + else + { + abort (); + } +} |