https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65242

            Bug ID: 65242
           Summary: [5 Regression] ICE (in gen_add2_insn, at
                    optabs.c:4761) on powerpc64le-linux-gnu
           Product: gcc
           Version: 5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: doko at gcc dot gnu.org

with r221042

$ g++ -c -g -O3 loadbi3.ii 
loadbi3.ii: In function 'void J::m_fn8()':
loadbi3.ii:91:1: internal compiler error: in gen_add2_insn, at optabs.c:4761
 }
 ^
Please submit a full bug report,
with preprocessed source if appropriate.

$ cat loadbi3.ii
class A {
public:
  int m_fn1();
};
class B {
public:
  enum IOMode { reading };
};
class tn_file_buf_stream : B {
public:
  tn_file_buf_stream(IOMode);
  ~tn_file_buf_stream();
};
class C {
public:
  int &operator[](int);
};
class D {
public:
  bool m_fn2();
};
class F {
public:
  int m_fn3(D &);
};
class G {
public:
  D bdt;
};
class ObjectType {
public:
  int id;
  D weather;
  struct H {
    F terrainaccess;
  };
  H m_fn4();
  struct {
    A images;
  } weatherPicture[];
  ObjectType *m_fn5();
  int m_fn6();
} a;
#pragma pack(1)
class I {};
class J {
  J(I *);
  I translationTableTMISSPart;
  void m_fn8();
  tn_file_buf_stream *MissFile;
  void m_fn9();
  virtual G *m_fn7(int, int);
};
int b, c, d, g;
int e[5];
short f;
void J::m_fn9() {
  int h;
  C k;
  for (; b;) {
    int l = c, n = c & 1;
    for (int m; d;) {
      int o = 0;
      for (int p = 0; p < 2 && !o; p++)
        if (g)
          for (int i; i < a.m_fn6(); i++) {
            ObjectType *q = a.m_fn5();
            for (int r = 0; r < 6; r++)
              if (q->weather.m_fn2())
                for (int j; j < q->weatherPicture[r].images.m_fn1(); j++)
                  if (e[m]) {
                    G *s = m_fn7(l, n);
                    if (q->m_fn4().terrainaccess.m_fn3(s->bdt))
                      g = o = 1;
                  }
          }
      k[h++] = f;
    }
  }
}

void J::m_fn8() try {
  tn_file_buf_stream t(B::reading);
  MissFile = &t;
  m_fn9();
  J u(0);
  u.m_fn8();
}

catch (int) {
}

Reply via email to