https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80763
--- Comment #1 from David Binderman <dcb314 at hotmail dot com> --- Here is the reduced code struct b { virtual ~b(); }; struct c { virtual unsigned d(unsigned, unsigned); virtual unsigned f(unsigned, unsigned, unsigned, unsigned) = 0; }; template <class e> class i : e, c { public: float *g[e::h]; unsigned d(unsigned k, unsigned) { bool j; j ? f(k, k, 1, 1) : 0; } }; struct l : b { enum { h }; }; class n : i<l> { unsigned f(unsigned, unsigned, unsigned, unsigned) { float *m = g[0]; float a[512]; m[0] = a[0]; } virtual void o(); }; void n::o() {}