62 lines
1.2 KiB
C
62 lines
1.2 KiB
C
/* PR target/85026. */
|
|
/* { dg-do assemble } */
|
|
/* { dg-options "-O2 -std=gnu++11" } */
|
|
|
|
template <class> class a;
|
|
class b;
|
|
struct c {
|
|
typedef a<b> &g;
|
|
};
|
|
template <typename d> struct e { typedef typename d::f iter; };
|
|
class h {
|
|
public:
|
|
void __attribute__((noreturn)) i();
|
|
} ab;
|
|
template <class> class a {
|
|
public:
|
|
typedef b *f;
|
|
b &operator[](unsigned m) {
|
|
if (ac)
|
|
ab.i();
|
|
return ad[m];
|
|
}
|
|
f n() { return ad; }
|
|
f m_fn3();
|
|
b *ad;
|
|
unsigned ac;
|
|
};
|
|
class b {
|
|
public:
|
|
short j;
|
|
short k;
|
|
signed l;
|
|
} __attribute__((__packed__));
|
|
void o(a<b> &m, b &p2, b &p) {
|
|
p2 = p = m[0];
|
|
if (bool at = false)
|
|
;
|
|
else
|
|
for (c::g au(m);; at = true)
|
|
if (bool av = false)
|
|
;
|
|
else
|
|
for (e<a<int>>::iter aw = au.n(), ax = au.m_fn3(); ax;
|
|
av ? (void)0 : (void)0)
|
|
if (bool ay = 0)
|
|
;
|
|
else
|
|
for (b az = *aw; !ay; ay = true) {
|
|
if (p2.j)
|
|
p2.j = az.j;
|
|
else if (p.j)
|
|
p.j = az.j;
|
|
if (p2.k)
|
|
p2.k = az.k;
|
|
else if (az.k > p.k)
|
|
p.k = az.k;
|
|
if (az.l < p2.l)
|
|
if (az.l > p.l)
|
|
p.l = az.l;
|
|
}
|
|
}
|