aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.other/loop1.C
blob: 3380dd4d74d305c44440a2cdeca56a9e2b412fe1 (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
// Test for bad loop optimization of goto fixups.
// Special g++ Options: -O2

typedef bool (*ftype) ();

int c, d;
struct A {
  A() { ++c; }
  A(const A&) { ++c; }
  ~A() { ++d; }
};

void f (ftype func)
{
  A a;
  do {
    if ((*func)()) return;
  } while (true);
}

bool test ()
{
  return true;
}

main ()
{
  f (test);
  return (c != d);
}