| 2002-08-14 Gabriel Dos Reis <gdr@nerim.net> |
| |
| Fix PR/7566 |
| * c-semantics.c (genrtl_case_label): Don't (mis)use |
| warning_with_decl. |
| |
| 2005-01-03 Jakub Jelinek <jakub@redhat.com> |
| |
| * g++.dg/parse/jumptocaselab1.C: New test. |
| |
| |
| |
| @@ -673,8 +673,7 @@ genrtl_case_label (case_label) |
| if (cleanup) |
| { |
| static int explained = 0; |
| - warning_with_decl (TREE_PURPOSE (cleanup), |
| - "destructor needed for `%#D'"); |
| + warning ("destructor needed for `%#D'", TREE_PURPOSE (cleanup)); |
| warning ("where case label appears here"); |
| if (!explained) |
| { |
| |
| |
| @@ -0,0 +1,19 @@ |
| +// PR c++/7566 |
| +// { dg-do compile } |
| + |
| +struct bar { bar (); ~bar ();}; |
| + |
| +void foo (int c) |
| +{ |
| + switch (c) |
| + { |
| + case 0: |
| + case 1: |
| + bar x; // { dg-error "crosses initialization" } |
| + break; |
| + default: // { dg-error "jump to case label" } |
| + break; |
| + } |
| +} |
| + |
| +// { dg-warning "destructor needed|where case label|enclose actions" "" { target *-*-* } 14 } |