Mercurial > hg > CbC > CbC_gcc
diff gcc/testsuite/gcc.dg/Wswitch.c @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gcc/testsuite/gcc.dg/Wswitch.c Fri Oct 27 22:46:09 2017 +0900 @@ -0,0 +1,63 @@ +/* PR c/4475, PR c++/3780 */ +/* { dg-do compile } */ +/* { dg-options "-Wswitch" } */ + +enum e { e1, e2 }; + +int +foo (int i, int j, enum e ei, enum e ej, enum e ek, enum e el, + enum e em, enum e en, enum e eo, enum e ep) +{ + switch (i) + { + case 1: return 1; + case 2: return 2; + } + switch (j) + { + case 3: return 4; + case 4: return 3; + default: break; + } + switch (ei) /* { dg-warning "enumeration value 'e1' not handled in switch" "enum e1" } */ + { /*{ dg-warning "enumeration value 'e2' not handled in switch" "enum e2" { target *-*-* } .-1 } */ + } + switch (ej) + { + default: break; + } + switch (ek) /* { dg-warning "enumeration value 'e2' not handled in switch" "enum e2" } */ + { + case e1: return 1; + } + switch (el) + { + case e1: return 1; + default: break; + } + switch (em) + { + case e1: return 1; + case e2: return 2; + } + switch (en) + { + case e1: return 1; + case e2: return 2; + default: break; + } + switch (eo) + { + case e1: return 1; + case e2: return 2; + case 3: return 3; /* { dg-warning "case value '3' not in enumerated type 'enum e'" "excess 3" } */ + } + switch (ep) + { + case e1: return 1; + case e2: return 2; + case 3: return 3; /* { dg-warning "case value '3' not in enumerated type 'enum e'" "excess 3" } */ + default: break; + } + return 0; +}