41 lines
837 B
C
41 lines
837 B
C
// { 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
|
|
;
|
|
}
|