blob: bd3f0b5a2e971eeb2115a643cfe668f16a7719ec [file] [log] [blame]
// PR rtl-optimization/94468
// { dg-do compile { target c++11 } }
// { dg-options "-O2" }
// { dg-additional-options "-fPIC" { target fpic } }
bool a();
enum b {};
class c;
template <typename> struct d;
template <class e, typename g, typename... h> struct d<g (e::*)(h...)> {
typedef e i;
};
struct j { j(void(int, j *, c *, void **, bool *)) {} };
template <typename l> struct m : public j {
l ab;
static void ac(int, j *, c *, void **, bool *);
m(l f) : j(ac), ab(f) {}
};
b ad;
struct c {
template <typename n, typename o>
void ae(typename d<n>::i *p, n af, typename d<o>::i *ag, o ah) {
ai(p, &af, ag, &ah, new m<o>(ah), ad, &d<n>::i::aj);
}
void ai(c *, void *, c *, void *, j *, b, int *);
};
struct r : public c { static int aj; void t(); };
struct al : public c {
static int aj;
void am();
void ao();
void ap();
};
struct aq { aq(const int &, const int & = int()); };
struct ar : public c { ~ar(); };
struct as : public ar {
as();
void at();
void au();
void av();
};
struct u : public c { void ax(); };
struct ay { int az(); };
struct ba : public c { static int aj; void bb(); };
struct bc : public al { bc() { if (a()) am(); } };
as::as() {
al *bd = new bc;
ae(bd, &al::ao, this, &as::au);
ae(bd, &al::ap, this, &as::av);
r be;
u bf;
ae(&be, &r::t, &bf, &u::ax);
c bg = *bd;
ae(static_cast<ba *>(&bg), &ba::bb, this, &as::at);
ay bh;
aq am(bh.az());
}