view gcc/testsuite/g++.dg/pr85026.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
line wrap: on
line source

/* 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;
            }
}