(root)/
gcc-13.2.0/
gcc/
testsuite/
g++.dg/
opt/
pr103742.C
// PR debug/103742
// { dg-do compile { target c++17 } }
// { dg-options "-O2 -fnon-call-exceptions --param=early-inlining-insns=82 -fcompare-debug" }

template <typename T> T max(T a, T b) { return a >= b ? a : b; }
template <typename T> T abs(T);
template <int T, int U> struct A {
  long a;
  A(A &x) { a = x.a; }
  A(long);
  A foo(A) {
    if (abs(a) && a == a)
      a = a ? U : T;
    else
      a += a;
    return *this;
  }
  bool operator>=(A) { return a; }
};
struct B {};
struct C {
  A<2147483647, 0> c;
};
struct D {
  A<2147483647, 0> d;
  C e[];
};
struct E : D{} * f;
A<2147483647, 0> bar() {
  A<2147483647, 0> g = g.foo(f->d);
  return max(g, (A<2147483647, 0>)1);
}
E *h;
void baz() {
  h->e[0].c = bar();
}