summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.jason/pmf7.C
blob: 7601333842a33357c0d9f4db64aa2ac803a69967 (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
// { dg-do run  }
// PRMS Id: 6486
// Make sure that no confused handling of COND_EXPRs and SAVE_EXPRs messes
// with the number of calls to foo.

int c;

struct A {
  void f () {}
  virtual void g () {}
};

A& foo ()
{
  static A a;
  ++c;
  return a;
}

int main ()
{
  void (A::*p)() = &A::f;
  (foo ().*p)();
  p = &A::g;
  (foo ().*p)();

  return 2 - c;
}