1// { dg-do compile }
2
3class A
4{
5public:
6  A ();
7};
8class B
9{
10public:
11  B (int);
12  operator void *() { return m_fn1 () ? 0 : this; }
13  int m_fn1 ();
14};
15typedef int jmp_buf[];
16struct C
17{
18  jmp_buf cond_;
19};
20class F
21{
22  C what_;
23  bool m_fn2 ();
24};
25int _setjmp (int[]);
26void longjmp ();
27class D
28{
29public:
30  D () { longjmp (); }
31};
32bool
33F::m_fn2 ()
34{
35  B a (0);
36  if (a)
37    if (_setjmp (what_.cond_))
38      return 0;
39    else
40      D ();
41  A b;
42}
43