From: pinskia Date: Sun, 16 Oct 2005 21:13:11 +0000 (+0000) Subject: 2005-10-16 Andrew Pinski X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ca4d58e1ba0eb4d0127451f95cc260f9f98334d3;p=thirdparty%2Fgcc.git 2005-10-16 Andrew Pinski PR c++/23959 * decl.c (pop_switch): Only call c_do_switch_warnings when not processing templates. 2005-10-16 Andrew Pinski 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 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 97a35a4b11fc..022cad3a127b 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2005-10-16 Andrew Pinski + + PR c++/23959 + * decl.c (pop_switch): Only call c_do_switch_warnings + when not processing templates. + 2005-10-16 Mark Mitchell PR c++/22173 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 56c2d4da765b..eafebc188b32 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -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; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ecdd049cfd07..034df7890921 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2005-10-16 Andrew Pinski + + 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 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 index 000000000000..2236ae531e28 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Wswitch-default-1.C @@ -0,0 +1,22 @@ +// PR C++/21123 +/* { dg-do compile } */ +/* { dg-options "-Wswitch-default" } */ + + +template +void foo( ) +{ + int i = 0; + + switch ( i ) /* { dg-bogus "switch missing default case" } */ + { + case 9: + default: + break; + } +} + +void f() +{ + foo(); +} 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 index 000000000000..832f867e0799 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Wswitch-default-2.C @@ -0,0 +1,21 @@ +// PR C++/21123 +/* { dg-do compile } */ +/* { dg-options "-Wswitch-default" } */ + + +template +void foo( ) +{ + int i = 0; + + switch ( i ) /* { dg-warning "switch missing default case" } */ + { + case 9: + break; + } +} + +void f() +{ + foo(); +}