blob: 28fdf7787a12ecc4995c15855bb64320bf0d6f38 [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-std=c++11 -O -fipa-cp -fipa-cp-clone --param=ipa-cp-max-recursive-depth=94 --param=logical-op-non-short-circuit=0" } */
enum a {};
struct m;
struct n {
a d;
};
int o(int, int);
struct p {
char d;
char aa;
p *ab;
bool q() const {
int h = d & 4;
return h;
}
char r() const { return aa; }
int s(const m *, bool) const;
} l;
struct t {
p *ac;
p *u() { return ac; }
p *v(int);
};
int w(const p *, const p *, const m *, int = 0);
struct m : n {
struct {
t *ad;
} ae;
char x() const;
p *y(int z) const { return ae.ad ? nullptr : ae.ad->v(z); }
} j;
int w(const p *z, const p *af, const m *ag, int ah) {
int a, g = z->s(ag, true), i = af->s(ag, true);
if (af->q()) {
if (ag->x())
return 0;
ah++;
char b = af->r();
p *c = ag->y(b), *e = ag->ae.ad->u();
int d = w(z, c, ag, ah), f = w(z, af ? e : af->ab, ag, ah);
a = f ? d : f;
return a;
}
if (g || i == 1)
return ag->d ? o(g, i) : o(g, i);
return 0;
}
void ai() {
for (p k;;)
w(&k, &l, &j);
}