diff options
author | Andrew Pinski <pinskia@physics.uc.edu> | 2005-10-16 21:13:11 +0000 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2005-10-16 14:13:11 -0700 |
commit | dddf9a0a085e2d14aee9ada04326cc2259ee8978 (patch) | |
tree | fcf84681133a792ef1ab8dad9656bc93e33a864d /gcc | |
parent | 5bf8b82d52a4192b4db5e38eade75108bc9da1a9 (diff) | |
download | gcc-dddf9a0a085e2d14aee9ada04326cc2259ee8978.zip gcc-dddf9a0a085e2d14aee9ada04326cc2259ee8978.tar.gz gcc-dddf9a0a085e2d14aee9ada04326cc2259ee8978.tar.bz2 |
re PR c++/23959 (-Wswitch-default reports missing default in a template that has one)
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 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.
From-SVN: r105466
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/decl.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/Wswitch-default-1.C | 22 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/Wswitch-default-2.C | 21 |
5 files changed, 59 insertions, 3 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 97a35a4..022cad3 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -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 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 56c2d4d..eafebc1 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 ecdd049..034df78 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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 index 0000000..2236ae5 --- /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 <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 index 0000000..832f867 --- /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 <typename ArrayType> +void foo( ) +{ + int i = 0; + + switch ( i ) /* { dg-warning "switch missing default case" } */ + { + case 9: + break; + } +} + +void f() +{ + foo<int>(); +} |