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.

Reply via email to