1/* { dg-do compile } */
2typedef enum
3{
4  NS_OK
5} nsresult;
6struct A
7{
8  static int kIID;
9};
10class B
11{
12};
13class C
14{
15public:
16  C (B p1) { m_fn1 (p1, A::kIID); }
17  void m_fn1 (B, int);
18};
19class D;
20class F
21{
22public:
23  F (int);
24};
25class G
26{
27public:
28  D *operator[](int);
29};
30class H
31{
32  virtual nsresult m_fn2 ();
33
34public:
35  void m_fn3 ();
36};
37class J : H
38{
39  G mQueries;
40  int mLiveUpdate;
41  nsresult m_fn2 ();
42};
43class D
44{
45public:
46  nsresult m_fn4 (int);
47  void m_fn5 (int);
48};
49class I
50{
51public:
52  static I *
53  m_fn6 ()
54  {
55    B __trans_tmp_3;
56    if (!gHistoryService)
57      C serv = __trans_tmp_3;
58  }
59  void m_fn7 ();
60  static I *gHistoryService;
61};
62D *Refresh___trans_tmp_2;
63D Refresh___trans_tmp_6, Refresh___trans_tmp_5;
64int Refresh_hasDomain;
65nsresult
66J::m_fn2 ()
67{
68  m_fn3 ();
69  I history = *I::m_fn6 ();
70  switch (mLiveUpdate)
71    {
72    case 1:
73      {
74        mQueries[0];
75        F query = 0;
76        if (Refresh_hasDomain)
77          return NS_OK;
78      }
79    case 0:
80      {
81        Refresh___trans_tmp_2 = mQueries[0];
82        F query = Refresh___trans_tmp_5.m_fn4 (0);
83        history.m_fn7 ();
84        Refresh___trans_tmp_6.m_fn5 (0);
85      }
86    case 3:
87      m_fn2 ();
88    }
89}
90