https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63563
Bug ID: 63563 Summary: [4.9/5 Regression] ICE: in vectorizable_store, at tree-vect-stmts.c:5106 with -mavx2 Product: gcc Version: 4.9.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: trippels at gcc dot gnu.org A gentoo user emailed me the following testcase: markus@x4 ~ % cat blub.ii struct A { unsigned long m_count; unsigned long m_sum; unsigned long m_min; unsigned long m_max; void m_fn1 (A *p1) { m_count = m_sum = m_min = p1->m_min; if (__builtin_expect (m_max, 0)) m_max = p1->m_max; } }; struct B { A m_stat[]; void m_fn2 () { A *a = &m_stat[0]; A b, c = m_stat[0]; for (; a < &b; a++) a->m_fn1 (&c); } }; struct C { B m_lock_stat; void m_fn3 () { m_lock_stat.m_fn2 (); } }; struct PFS_table_share { C m_table_stat; } d; void PFS_tablesafe_aggregate_io () { d.m_table_stat.m_fn3 (); } markus@x4 ~ % g++ -O3 -mavx2 -c blub.ii blub.ii: In function ‘void PFS_tablesafe_aggregate_io()’: blub.ii:41:1: internal compiler error: in vectorizable_store, at tree-vect-stmts.c:5106 PFS_tablesafe_aggregate_io () ^ 0xdeba83 vectorizable_store ../../gcc/gcc/tree-vect-stmts.c:5106 0xdf0371 vect_analyze_stmt(gimple_statement_base*, bool*, _slp_tree*) ../../gcc/gcc/tree-vect-stmts.c:7105 0xdfbc91 vect_analyze_loop_operations ../../gcc/gcc/tree-vect-loop.c:1505 0xdfbc91 vect_analyze_loop_2 ../../gcc/gcc/tree-vect-loop.c:1766 0xdfbc91 vect_analyze_loop(loop*) ../../gcc/gcc/tree-vect-loop.c:1864 0xe113f7 vectorize_loops() ../../gcc/gcc/tree-vectorizer.c:432 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <http://gcc.gnu.org/bugs.html> for instructions.