1/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
2/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
3/* { dg-require-effective-target powerpc_p8vector_ok } */
4/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
5/* { dg-options "-mcpu=power8 -O3" } */
6
7class A {
8public:
9  int m_fn1();
10};
11class B {
12public:
13  enum IOMode { reading };
14};
15class tn_file_buf_stream : B {
16public:
17  tn_file_buf_stream(IOMode);
18  ~tn_file_buf_stream();
19};
20class C {
21public:
22  int &operator[](int);
23};
24class D {
25public:
26  bool m_fn2();
27};
28class F {
29public:
30  int m_fn3(D &);
31};
32class G {
33public:
34  D bdt;
35};
36class ObjectType {
37public:
38  int id;
39  D weather;
40  struct H {
41    F terrainaccess;
42  };
43  H m_fn4();
44  struct {
45    A images;
46  } weatherPicture[];
47  ObjectType *m_fn5();
48  int m_fn6();
49} a;
50#pragma pack(1)
51class I {};
52class J {
53  J(I *);
54  I translationTableTMISSPart;
55  void m_fn8();
56  tn_file_buf_stream *MissFile;
57  void m_fn9();
58  virtual G *m_fn7(int, int);
59};
60int b, c, d, g;
61int e[5];
62short f;
63void J::m_fn9() {
64  int h;
65  C k;
66  for (; b;) {
67    int l = c, n = c & 1;
68    for (int m; d;) {
69      int o = 0;
70      for (int p = 0; p < 2 && !o; p++)
71        if (g)
72          for (int i; i < a.m_fn6(); i++) {
73            ObjectType *q = a.m_fn5();
74            for (int r = 0; r < 6; r++)
75              if (q->weather.m_fn2())
76                for (int j; j < q->weatherPicture[r].images.m_fn1(); j++)
77                  if (e[m]) {
78                    G *s = m_fn7(l, n);
79                    if (q->m_fn4().terrainaccess.m_fn3(s->bdt))
80                      g = o = 1;
81                  }
82          }
83      k[h++] = f;
84    }
85  }
86}
87
88void J::m_fn8() try {
89  tn_file_buf_stream t(B::reading);
90  MissFile = &t;
91  m_fn9();
92  J u(0);
93  u.m_fn8();
94}
95
96catch (int) {
97}
98