https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118096
--- Comment #4 from Sam James <sjames at gcc dot gnu.org> --- Reduced but still a bit gross: ``` void fancy_abort(char *, int, const char *) __attribute__((__noreturn__)); unsigned m_num; struct vl_ptr; struct va_heap { typedef vl_ptr default_layout; }; template <typename, typename A = va_heap, typename = typename A::default_layout> struct vec; int vNULL; template <typename T, typename A> struct vec<T, A, int> { T operator[](unsigned ix) { ix < m_num ? fancy_abort("", 0, __FUNCTION__), 0 : 0; return ix; } }; template <typename T> struct vec<T> { vec(int); T operator[](unsigned ix) { return m_vec[ix]; } vec<T, va_heap, int> m_vec; }; int *graphds_scc_queue; vec<int> graphds_scc_postorder = vNULL; void graphds_scc() { int i; for (; i; i++) graphds_scc_queue[i] = graphds_scc_postorder[1]; } ```