OSDN Git Service

2005-10-16 Andrew Pinski <pinskia@physics.uc.edu>
authorpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 16 Oct 2005 21:13:11 +0000 (21:13 +0000)
committerpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 16 Oct 2005 21:13:11 +0000 (21:13 +0000)
        PR c++/23959
        * decl.c (pop_switch): Only call c_do_switch_warnings
        when not processing templates.

2005-10-16  Andrew Pinski  <pinskia@physics.uc.edu>

        PR c++/23959
        * g++.dg/warn/Wswitch-default-1.C: New test.
        * g++.dg/warn/Wswitch-default-2.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@105466 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/warn/Wswitch-default-1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/warn/Wswitch-default-2.C [new file with mode: 0644]

index 97a35a4..022cad3 100644 (file)
@@ -1,3 +1,9 @@
+2005-10-16  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       PR c++/23959
+       * decl.c (pop_switch): Only call c_do_switch_warnings
+       when not processing templates.
+
 2005-10-16  Mark Mitchell  <mark@codesourcery.com>
 
        PR c++/22173
index 56c2d4d..eafebc1 100644 (file)
@@ -2415,9 +2415,10 @@ pop_switch (void)
     switch_location = EXPR_LOCATION (cs->switch_stmt);
   else
     switch_location = input_location;
-  c_do_switch_warnings (cs->cases, switch_location,
-                       SWITCH_STMT_TYPE (cs->switch_stmt),
-                       SWITCH_STMT_COND (cs->switch_stmt));
+  if (!processing_template_decl)
+    c_do_switch_warnings (cs->cases, switch_location,
+                         SWITCH_STMT_TYPE (cs->switch_stmt),
+                         SWITCH_STMT_COND (cs->switch_stmt));
 
   splay_tree_delete (cs->cases);
   switch_stack = switch_stack->next;
index ecdd049..034df78 100644 (file)
@@ -1,3 +1,9 @@
+2005-10-16  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       PR c++/23959
+       * g++.dg/warn/Wswitch-default-1.C: New test.
+       * g++.dg/warn/Wswitch-default-2.C: New test.
+
 2005-10-16  Mark Mitchell  <mark@codesourcery.com>
 
        PR c++/22173
diff --git a/gcc/testsuite/g++.dg/warn/Wswitch-default-1.C b/gcc/testsuite/g++.dg/warn/Wswitch-default-1.C
new file mode 100644 (file)
index 0000000..2236ae5
--- /dev/null
@@ -0,0 +1,22 @@
+// PR C++/21123
+/* { dg-do compile } */
+/* { dg-options "-Wswitch-default" } */
+
+
+template <typename ArrayType>
+void foo( )
+{
+    int i = 0;
+
+  switch ( i ) /* { dg-bogus "switch missing default case" } */
+  {
+  case 9:
+  default:
+  break;
+  }
+}
+
+void f()
+{
+  foo<int>();
+}
diff --git a/gcc/testsuite/g++.dg/warn/Wswitch-default-2.C b/gcc/testsuite/g++.dg/warn/Wswitch-default-2.C
new file mode 100644 (file)
index 0000000..832f867
--- /dev/null
@@ -0,0 +1,21 @@
+// PR C++/21123
+/* { dg-do compile } */
+/* { dg-options "-Wswitch-default" } */
+
+
+template <typename ArrayType>
+void foo( )
+{
+    int i = 0;
+
+  switch ( i ) /* { dg-warning "switch missing default case" } */
+  {
+  case 9:
+  break;
+  }
+} 
+
+void f()
+{
+  foo<int>();
+}