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