summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.other/union2.C
blob: 5c2d7dcac7236599359b7c7621b7f7258a34b2bb (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
// { dg-do run  }
// Bug: g++ crashed on empty initializers for unions.
// Bug: gcc and g++ didn't zero unions with empty initializers.
// Submitted by J"orn Rennecke <amylaar@cygnus.co.uk>

extern "C" void exit (int);

typedef union u
{
  union u *up;
  void *vp;
} u;

static u v = {};

void bar (u);
void baz (u);

void foo()
{
       u w = {};
       u x = { &v };
       baz (x);
       bar (w);
}

void baz (u w) { }

void bar (u w)
{
  if (w.up)
    exit (1);
}

int main ()
{
  foo ();
  return 0;
}