summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.other/reload1.C
blob: 6358955866858e5d8aaf516883562ac0a0ddd94c (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
41
42
43
44
45
46
47
// { dg-do run  }
extern "C" void abort ();

struct A {
  unsigned long long u;
} *a;

struct B {
  unsigned long long v;
  unsigned long long w ()
  {
    return a->u - v;
  }
} b;

struct C {
  static unsigned long long x;
  static void y (unsigned long long z);
};

unsigned long long C::x = 0;

int main ()
{
  a = new A;
  b.v = 333418;
  a->u = 1132270;
  C::x = 0;
  C::y (799016);
}

void foo (unsigned long long a, unsigned long long b, unsigned long long c)
{
}

void C::y (unsigned long long z)
{
  unsigned long long c = b.w () - x;
  if (z < b.w ())
    {
      if ((long long) c < 0)
	{
	  foo (b.w (), a->u, b.v);
	  abort ();
	}
    }
}