https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87974
Bug ID: 87974 Summary: ice in vect_get_vec_def_for_stmt_copy Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: dcb314 at hotmail dot com Target Milestone: --- For this C++ code: struct h { typedef int &c; }; class i { struct j { using c = int *; }; using as = j::c; }; template <typename> class k { public: using as = i::as; h::c operator[](long l) { k<int[]>::as d = 0; return d[l]; } }; class : public k<int[]> { } a; long c, f; void m() { for (long b; b <= 6; b++) for (long g; g < b; g++) { unsigned long e = g; c = 0; for (; c < b; c++) f = e >>= 1; a[g] = f; } } compiled by recent gcc trunk and compiler flag -O3, does this: during GIMPLE pass: vect bug477.cc: In function ‘void m()’: bug477.cc:21:6: internal compiler error: in vect_get_vec_def_for_stmt_copy, at t ree-vect-stmts.c:1615 21 | void m() { | ^ 0x787b69 vect_get_vec_def_for_stmt_copy(vec_info*, tree_node*) ../../trunk/gcc/tree-vect-stmts.c:1615 0x787b69 vect_get_vec_def_for_stmt_copy(vec_info*, tree_node*) ../../trunk/gcc/tree-vect-stmts.c:1607 0x787b69 vect_get_vec_defs_for_stmt_copy(vec_info*, vec<tree_node*, va_heap, vl_ ptr>*, vec<tree_node*, va_heap, vl_ptr>*) ../../trunk/gcc/tree-vect-stmts.c:1634 This bug seems to have started sometime between revision 265846 and 265907.