Blame SOURCES/gcc32-c++-pr7566.patch

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