| // { dg-do assemble } |
| |
| // Based on a testcase submitted by Tudor Hulubei <tudor@cs.unh.edu> |
| |
| // X is not a POD because it has a user-defined destructor. |
| // Therefore, we can't cross its initialization. |
| |
| // vector<int> is not even an aggregate; nevertheless, no error is |
| // reported... |
| |
| struct A { |
| A() {} |
| }; |
| |
| void a() { |
| goto bar; // { dg-error "" } jump from here |
| A x; // { dg-error "" } jump crosses initialization |
| bar: // { dg-error "" } jump to here |
| ; |
| } |
| |
| struct X { |
| ~X() {} |
| }; |
| |
| void b() { |
| goto bar; // { dg-error "" } jump from here |
| X x; // { dg-error "" } jump crosses initialization |
| bar: // { dg-error "" } jump to here |
| ; |
| } |
| |
| #include <vector> |
| |
| void c() { |
| goto bar; // { dg-error "" } jump from here |
| std::vector<int> x; // { dg-error "" } jump crosses initialization |
| bar: // { dg-error "" } jump to here |
| ; |
| } |