re PR c/4475 (-Wswitch option not functional)
authorAndrew Cagney <ac131313@redhat.com>
Sun, 3 Feb 2002 15:58:08 +0000 (15:58 +0000)
committerAndrew Cagney <cagney@gcc.gnu.org>
Sun, 3 Feb 2002 15:58:08 +0000 (15:58 +0000)
* gcc.dg/Wswitch.c: New test.
PR gcc/4475. PR gcc/3780.

From-SVN: r49462

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/Wswitch.c [new file with mode: 0644]

index 1a57603bb6b8ab69c9ad6acad43fe0d5ef59f660..1f5090f6520c3f6cbee7e2d286f7eb3ed9e49993 100644 (file)
@@ -1,3 +1,8 @@
+2002-02-03  Andrew Cagney  <ac131313@redhat.com>
+
+       * gcc.dg/Wswitch.c: New test.
+       PR gcc/4475. PR gcc/3780.
+
 2002-02-03  Toon Moene  <toon@moene.indiv.nluug.nl>
 
        * g77.f-torture/execute/5122.f: New test for regressions
diff --git a/gcc/testsuite/gcc.dg/Wswitch.c b/gcc/testsuite/gcc.dg/Wswitch.c
new file mode 100644 (file)
index 0000000..372b915
--- /dev/null
@@ -0,0 +1,63 @@
+/* PR gcc/4475, PR gcc/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: return 7;
+    }
+  switch (ei)
+    { /* { dg-warning "enumeration value `e1' not handled in switch" "enum e1" { target *-*-* } 24 } */
+    } /* { dg-warning "enumeration value `e2' not handled in switch" "enum e2" } */
+  switch (ej)
+    {
+    default: break;
+    }
+  switch (ek)
+    {
+    case e1: return 1;
+    } /* { dg-warning "enumeration value `e2' not handled in switch" "enum e1" } */
+  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 `e'" "excess 3" } */
+  switch (ep)
+    {
+    case e1: return 1;
+    case e2: return 2;
+    case 3: return 3;
+    default: break;
+    } /* Since there is a default, no warning about ``case 3'' } */
+  return 0;
+}