// PR c++/94775 // { dg-do compile { target c++14 } } // { dg-options "-O2 -Warray-bounds" } template using a = int; template using b = int; typedef char d; template using e = int; template struct h { using i = b>, e>; }; template using j = typename h::i; long ab, k, aj; const d l[]{}; class m { public: m(int); }; class n { void ad() const; template void o(long) const { using c __attribute__((aligned(1))) = const ae; } long p; template auto s(unsigned long, unsigned long, unsigned long, unsigned long) const; template auto q(unsigned long, unsigned long) const; }; template auto n::s(unsigned long, unsigned long, unsigned long, unsigned long t) const { o(p); return t; } template auto n::q(unsigned long p1, unsigned long p2) const { using r = j<4, false>; using ai = j<4, g>; return s(ab, k, p1, p2); } void n::ad() const { long f(l[aj]); // { dg-warning "outside array bounds" } m(q(8, f)); }