1 // { dg-do assemble  }
2 
3 // Based on a testcase submitted by Tudor Hulubei <tudor@cs.unh.edu>
4 
5 // X is not a POD because it has a user-defined destructor.
6 // Therefore, we can't cross its initialization.
7 
8 // vector<int> is not even an aggregate; nevertheless, no error is
9 // reported...
10 
11 struct A {
AA12   A() {}
13 };
14 
a()15 void a() {
16   goto bar; // { dg-message "" } jump from here
17   A x; // { dg-message "" } jump crosses initialization
18  bar: // { dg-error "" } jump to here
19   ;
20 }
21 
22 struct X {
~XX23   ~X() {}
24 };
25 
b()26 void b() {
27   goto bar; // { dg-message "" } jump from here
28   X x; // { dg-message "" } jump crosses initialization
29  bar: // { dg-error "" } jump to here
30   ;
31 }
32 
33 #include <vector>
34 
c()35 void c() {
36   goto bar; // { dg-message "" } jump from here
37   std::vector<int> x; // { dg-message "" } jump crosses initialization
38  bar: // { dg-error "" } jump to here
39   ;
40 }
41