https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86850
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org --- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> --- So the suggested assert is bogus. But indeed the issue is that vect_create_new_slp_node eventually uses .create (0) which does nothing and then splice does template<typename T> inline void vec<T, va_heap, vl_ptr>::splice (const vec<T, va_heap, vl_ptr> &src) { if (src.m_vec) m_vec->splice (*(src.m_vec)); } which for m_vec == NULL is doing the reported. I guess replacing if (src.m_vec) with if (src.length ()) would fix this. diff --git a/gcc/vec.h b/gcc/vec.h index f8c039754d2..407269c5ad3 100644 --- a/gcc/vec.h +++ b/gcc/vec.h @@ -1688,7 +1688,7 @@ template<typename T> inline void vec<T, va_heap, vl_ptr>::splice (const vec<T, va_heap, vl_ptr> &src) { - if (src.m_vec) + if (src.length ()) m_vec->splice (*(src.m_vec)); }