https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118464

--- Comment #3 from Ted Rodgers <ted.d.rodgers at gmail dot com> ---
Reduced:


struct a {
  int begin;
  int end;
};
using b = a[];
struct {
  b d;
  a &c(long e) { return d[e]; }
} l;
void f(char *, int, int, int) __attribute__((__noreturn__));
struct g {
  int operator!=(g e) { return h != e.h; }
  unsigned operator*() { return h; }
  void operator++() { h++; }
  long h;
};
struct j {
  g begin() { return {}; }
  g end() { return {k}; }
  int from;
  long k;
};
long o;
a &m(long e) { return l.c(e); }
struct {
  a n(long e) {
    unsigned q = o;
    e < q ? void() : f("", 1, 1, 1);
    return l.c(1);
  }
} s;
unsigned p;
void fn3() {
  j r;
  p = o;
  r = {1, p};
  for (auto i : r)
    m(i).begin = m(i).end = s.n(i).end;
}

Reply via email to