summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.other/init9.C
blob: 6780b5a973ead456d4f6bb727d5705167389446c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// { 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
  ;
}