https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113373
--- Comment #3 from David Binderman <dcb314 at hotmail dot com> --- Reduced C++ code seems to be: void __assert_fail(char *, char *, int, const char *) __attribute__((__noreturn__)); template <class T> struct asCArray { asCArray(int); T &operator[](unsigned); T *array; int length; }; template <class T> T &asCArray<T>::operator[](unsigned index) { index < length ? void() : __assert_fail("", "", 8, __PRETTY_FUNCTION__); return array[index]; } unsigned asCReaderTranslateFunction_bc_1; int asCReaderTranslateFunction_bcLength; void asCReaderTranslateFunction() { asCArray<unsigned> bcSizes(asCReaderTranslateFunction_bcLength); int offset, size; for (int num; offset--; num++) size += bcSizes[num]; asCReaderTranslateFunction_bc_1 = size; }