https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88995
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2019-01-24 CC| |jakub at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Somewhat further reduced: typedef enum {} a; typedef enum { b, c, d, e, f } g; typedef enum { h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an } ao; typedef struct { long aq[]; } ar; struct as; using ay = a; using az = g; const az ba = b; const az bb = c; const az bc = d; const az bd = e; const az be = f; using bf = ao; const bf any = h; const bf bg = i; const bf bh = j; const bf bi = k; const bf bj = l; const bf bk = m; const bf bl = n; const bf bm = o; const bf bn = p; const bf bo = q; const bf bp = r; const bf bq = s; const bf br = t; const bf bs = u; const bf bt = v; const bf bu = w; const bf bv = x; const bf bw = y; const bf bx = z; const bf by = aa; const bf bz = ab; const bf ca = ac; const bf cb = ad; const bf cc = ae; const bf cd = af; const bf ce = ag; const bf cf = ah; const bf cg = ai; const bf ch = aj; const bf ci = ak; const bf cj = al; const bf ck = am; const bf cl = an; using cm = ar; using cn = as; using cp = int; using cq = int; using cr = int; class cx { public: template <typename cy> cx(cy, cy); }; struct da { da(int ); cm db(); }; struct at { virtual ay dc(int **, const int *, const int **) const; }; struct as { typedef ay (*dd)(at **, const int *, const int *, const int *); }; struct de { de(at *, cx, cx); }; struct dg { ~dg(); }; struct dh : at { using di = dg; di dj; }; namespace dk { const bool dl = true; const bool dm = false; } template <bool, typename> struct dn ; template <bool order_keep> struct dn<order_keep, void> { static ay execute() { da input_d = 0; constexpr bool w_groups = by; auto _g_oihw_d = input_d; [&] { auto _g_oihw_off = _g_oihw_d.db().aq[w_groups]; }; return ay(); } }; template <int, bf , int, bf , int, typename spec = void> struct srt : de { struct dg : dh { dg(di *, di *, const cp *); ay dc(cq **, const cr *inputs, const cq **outputs) const { cx ins(inputs, inputs); cx outs(outputs, outputs); srt(this, ins, outs); return ay(); } static ay ct(at **, const int *input_pd, const int *output_pd, const cp *attr) { auto _pd = new dg((di *)input_pd, (di *)output_pd, attr); delete _pd; return ay(); } }; srt(const dg *pd, cx inputs, cx outputs) : de(&conf_, inputs, outputs), conf_(*pd) { dn<1, spec>::execute; } dg conf_; }; template <int, int, int, int, int> struct wrt { struct dg { static ay ct(at **, const int *, const int *, const cp *); }; }; using rpd_ct_f = cn::dd; rpd_ct_f cql[]{ srt<ba, any, ba, any, any>::dg::ct, srt<ba, any, ba, bj, dk::dl>::dg::ct, srt<ba, any, ba, bj, dk::dm>::dg::ct, srt<ba, any, ba, bk, dk::dl>::dg::ct, srt<ba, any, ba, bk, dk::dm>::dg::ct, srt<ba, any, ba, bw, dk::dl>::dg::ct, srt<ba, any, ba, bw, dk::dm>::dg::ct, srt<ba, any, ba, bx, dk::dl>::dg::ct, srt<ba, any, ba, bx, dk::dm>::dg::ct, srt<ba, any, ba, bo, dk::dl>::dg::ct, srt<ba, any, ba, bo, dk::dm>::dg::ct, srt<ba, any, ba, bp, dk::dl>::dg::ct, srt<ba, any, ba, bp, dk::dm>::dg::ct, srt<ba, any, ba, bu, dk::dl>::dg::ct, srt<ba, any, ba, bu, dk::dm>::dg::ct, srt<ba, any, ba, bq, dk::dl>::dg::ct, srt<ba, any, ba, bq, dk::dm>::dg::ct, srt<ba, any, ba, bn, dk::dl>::dg::ct, srt<ba, any, ba, bn, dk::dm>::dg::ct, srt<ba, any, ba, bm, dk::dl>::dg::ct, srt<ba, any, ba, bm, dk::dm>::dg::ct, srt<ba, any, ba, bv, dk::dl>::dg::ct, srt<ba, any, ba, bv, dk::dm>::dg::ct, srt<ba, any, ba, cf, dk::dl>::dg::ct, srt<ba, any, ba, cf, dk::dm>::dg::ct, srt<ba, any, ba, cg, dk::dl>::dg::ct, srt<ba, any, ba, cg, dk::dm>::dg::ct, srt<ba, any, ba, cj, dk::dl>::dg::ct, srt<ba, any, ba, cj, dk::dm>::dg::ct, srt<ba, any, ba, ck, dk::dl>::dg::ct, srt<ba, any, ba, ck, dk::dm>::dg::ct, srt<ba, any, ba, cd, dk::dl>::dg::ct, srt<ba, any, ba, cd, dk::dm>::dg::ct, srt<ba, any, ba, bz, dk::dl>::dg::ct, srt<ba, any, ba, bz, dk::dm>::dg::ct, srt<ba, any, ba, ci, dk::dl>::dg::ct, srt<ba, any, ba, ci, dk::dm>::dg::ct, srt<ba, any, ba, ch, dk::dl>::dg::ct, srt<ba, any, ba, ch, dk::dm>::dg::ct, srt<ba, any, ba, ce, dk::dl>::dg::ct, srt<ba, any, ba, ce, dk::dm>::dg::ct, srt<be, bg, ba, bi, dk::dl>::dg::ct, srt<be, bg, ba, bj, dk::dl>::dg::ct, srt<ba, bg, ba, bi, dk::dl>::dg::ct, srt<ba, bg, ba, bi, dk::dm>::dg::ct, srt<ba, bg, ba, bj, dk::dl>::dg::ct, srt<ba, bg, ba, bj, dk::dm>::dg::ct, srt<ba, bi, ba, bj, dk::dl>::dg::ct, srt<ba, bi, ba, bj, dk::dm>::dg::ct, wrt<2, by, bd, cl, dk::dl>::dg::ct, wrt<2, bl, bd, cl, dk::dl>::dg::ct, srt<ba, bg, bb, bh, dk::dl>::dg::ct, srt<ba, bg, bb, bh, dk::dm>::dg::ct, srt<ba, bg, bd, bh, dk::dl>::dg::ct, srt<ba, bg, bd, bh, dk::dm>::dg::ct, srt<ba, bg, be, bh, dk::dl>::dg::ct, srt<ba, bg, be, bh, dk::dm>::dg::ct, srt<bb, bg, ba, bh, dk::dl>::dg::ct, srt<bb, bg, ba, bh, dk::dm>::dg::ct, srt<bb, bg, ba, bh, dk::dl>::dg::ct, srt<bb, bg, bb, bh, dk::dm>::dg::ct, srt<bb, bg, bd, bh, dk::dl>::dg::ct, srt<bb, bg, bd, bh, dk::dm>::dg::ct, srt<bb, bg, be, bh, dk::dl>::dg::ct, srt<bb, bg, be, bh, dk::dm>::dg::ct, srt<bd, bg, ba, bh, dk::dl>::dg::ct, srt<bd, bg, ba, bh, dk::dm>::dg::ct, srt<bd, bg, bb, bh, dk::dl>::dg::ct, srt<bd, bg, bb, bh, dk::dm>::dg::ct, srt<bd, bg, bd, bh, dk::dl>::dg::ct, srt<bd, bg, bd, bh, dk::dm>::dg::ct, srt<bd, bg, be, bh, dk::dl>::dg::ct, srt<bd, bg, be, bh, dk::dm>::dg::ct, srt<be, bg, ba, bh, dk::dl>::dg::ct, srt<be, bg, ba, bh, dk::dm>::dg::ct, srt<be, bg, bb, bh, dk::dm>::dg::ct, srt<be, bg, bb, bh, dk::dl>::dg::ct, srt<be, bg, bd, bh, dk::dl>::dg::ct, srt<be, bg, bd, bh, dk::dm>::dg::ct, srt<be, bg, be, bh, dk::dl>::dg::ct, srt<be, bg, be, bh, dk::dm>::dg::ct, srt<bd, bh, ba, bi, dk::dl>::dg::ct, srt<bd, bh, ba, bi, dk::dm>::dg::ct, srt<bd, bh, bb, bi, dk::dl>::dg::ct, srt<bd, bh, bb, bi, dk::dm>::dg::ct, srt<bd, bh, bd, bi, dk::dl>::dg::ct, srt<bd, bh, bd, bi, dk::dm>::dg::ct, srt<bd, bh, be, bi, dk::dl>::dg::ct, srt<bd, bh, be, bi, dk::dm>::dg::ct, srt<ba, bh, bb, bi, dk::dl>::dg::ct, srt<ba, bh, bb, bi, dk::dm>::dg::ct, srt<ba, bh, bd, bi, dk::dl>::dg::ct, srt<ba, bh, bd, bi, dk::dm>::dg::ct, srt<ba, bh, be, bi, dk::dl>::dg::ct, srt<ba, bh, be, bi, dk::dm>::dg::ct, srt<bb, bh, bd, bi, dk::dl>::dg::ct, srt<bb, bh, bd, bi, dk::dm>::dg::ct, srt<bb, bh, bb, bi, dk::dl>::dg::ct, srt<bb, bh, bb, bi, dk::dm>::dg::ct, srt<bb, bh, ba, bi, dk::dl>::dg::ct, srt<bb, bh, ba, bi, dk::dm>::dg::ct, srt<bb, bh, be, bi, dk::dl>::dg::ct, srt<bb, bh, be, bi, dk::dm>::dg::ct, srt<be, bh, bd, bi, dk::dl>::dg::ct, srt<be, bh, bd, bi, dk::dm>::dg::ct, srt<be, bh, bb, bi, dk::dl>::dg::ct, srt<be, bh, bb, bi, dk::dm>::dg::ct, srt<be, bh, be, bi, dk::dl>::dg::ct, srt<be, bh, be, bi, dk::dm>::dg::ct, srt<be, bh, ba, bi, dk::dl>::dg::ct, srt<be, bh, ba, bi, dk::dm>::dg::ct, srt<bd, bh, ba, bj, dk::dl>::dg::ct, srt<bd, bh, ba, bj, dk::dm>::dg::ct, srt<bd, bh, bb, bj, dk::dl>::dg::ct, srt<bd, bh, bb, bj, dk::dm>::dg::ct, srt<bd, bh, bd, bj, dk::dl>::dg::ct, srt<bd, bh, bd, bj, dk::dm>::dg::ct, srt<bd, bh, be, bj, dk::dl>::dg::ct, srt<bd, bh, be, bj, dk::dm>::dg::ct, srt<ba, bh, bb, bj, dk::dl>::dg::ct, srt<ba, bh, bb, bj, dk::dm>::dg::ct, srt<ba, bh, bd, bj, dk::dl>::dg::ct, srt<ba, bh, bd, bj, dk::dm>::dg::ct, srt<ba, bh, be, bj, dk::dl>::dg::ct, srt<ba, bh, be, bj, dk::dm>::dg::ct, srt<bb, bh, bd, bj, dk::dl>::dg::ct, srt<bb, bh, bd, bj, dk::dm>::dg::ct, srt<bb, bh, bb, bj, dk::dl>::dg::ct, srt<bb, bh, bb, bj, dk::dm>::dg::ct, srt<bb, bh, ba, bj, dk::dl>::dg::ct, srt<bb, bh, ba, bj, dk::dm>::dg::ct, srt<bb, bh, ba, bj, dk::dm>::dg::ct, srt<bb, bh, be, bj, dk::dl>::dg::ct, srt<bb, bh, be, bj, dk::dm>::dg::ct, srt<be, bh, bd, bj, dk::dl>::dg::ct, srt<be, bh, bd, bj, dk::dm>::dg::ct, srt<be, bh, bb, bj, dk::dl>::dg::ct, srt<be, bh, bb, bj, dk::dm>::dg::ct, srt<be, bh, be, bj, dk::dl>::dg::ct, srt<be, bh, be, bj, dk::dm>::dg::ct, srt<be, bh, ba, bj, dk::dl>::dg::ct, srt<be, bh, ba, bj, dk::dm>::dg::ct, srt<bd, bl, bd, br, dk::dl>::dg::ct, srt<bd, bl, bd, br, dk::dm>::dg::ct, srt<bd, by, bd, ca, dk::dl>::dg::ct, srt<bd, by, bd, ca, dk::dm>::dg::ct, srt<be, bl, be, br, dk::dl>::dg::ct, srt<be, bl, be, br, dk::dm>::dg::ct, srt<be, by, be, ca, dk::dl>::dg::ct, srt<be, by, be, ca, dk::dm>::dg::ct, srt<be, bl, bd, br, dk::dl>::dg::ct, srt<be, bl, bd, br, dk::dm>::dg::ct, srt<be, by, bd, ca, dk::dl>::dg::ct, srt<be, by, bd, ca, dk::dm>::dg::ct, srt<bd, bl, be, br, dk::dl>::dg::ct, srt<bd, bl, be, br, dk::dm>::dg::ct, srt<bd, by, be, ca, dk::dl>::dg::ct, srt<bd, by, be, ca, dk::dm>::dg::ct, srt<be, bl, bb, br, dk::dl>::dg::ct, srt<be, bl, bb, br, dk::dm>::dg::ct, srt<be, by, bb, ca, dk::dl>::dg::ct, srt<be, by, bb, ca, dk::dm>::dg::ct, srt<bd, bl, bb, br, dk::dl>::dg::ct, srt<bd, bl, bb, br, dk::dm>::dg::ct, srt<bd, by, bb, ca, dk::dl>::dg::ct, srt<bd, by, bb, ca, dk::dm>::dg::ct, srt<bb, bl, be, br, dk::dl>::dg::ct, srt<bb, bl, be, br, dk::dm>::dg::ct, srt<bb, by, be, ca, dk::dl>::dg::ct, srt<bb, by, be, ca, dk::dm>::dg::ct, srt<bb, bl, bd, br, dk::dl>::dg::ct, srt<bb, bl, bd, br, dk::dm>::dg::ct, srt<bb, by, bd, ca, dk::dl>::dg::ct, srt<bb, by, bd, ca, dk::dm>::dg::ct, srt<bb, bl, bb, br, dk::dl>::dg::ct, srt<bb, bl, bb, br, dk::dm>::dg::ct, srt<bb, by, bb, ca, dk::dl>::dg::ct, srt<bb, by, bb, ca, dk::dm>::dg::ct, srt<bc, bl, bc, bs, dk::dl>::dg::ct, srt<bc, bl, bc, bs, dk::dm>::dg::ct, srt<bc, by, bc, cb, dk::dl>::dg::ct, srt<bc, by, bc, cb, dk::dm>::dg::ct, srt<bc, bs, bc, bt, dk::dl>::dg::ct, srt<bc, bs, bc, bt, dk::dm>::dg::ct, srt<bc, cb, bc, cc, dk::dl>::dg::ct, srt<bc, cb, bc, cc, dk::dm>::dg::ct};