re PR tree-optimization/32224 (ICE in vect_analyze_operations, at tree-vect-analyze.c:374)

PR tree-optimization/32224
        * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
        vectorization upon a non GIMPLE_MODIFY_STMT.

From-SVN: r125566
This commit is contained in:
Dorit Nuzman 2007-06-08 08:57:54 +00:00 committed by Dorit Nuzman
parent 2dbc83d953
commit 0d2665809f
4 changed files with 38 additions and 3 deletions

View File

@ -1,3 +1,9 @@
2007-06-08 Dorit Nuzman <dorit@il.ibm.com>
PR tree-optimization/32224
* tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
vectorization upon a non GIMPLE_MODIFY_STMT.
2007-06-08 Christian Bruel <christian.bruel@st.com>
PR target/29953

View File

@ -1,3 +1,8 @@
2007-06-08 Dorit Nuzman <dorit@il.ibm.com>
PR tree-optimization/32224
* gcc.dg/vect/pr32224.c: New test.
2007-06-08 Jakub Jelinek <jakub@redhat.com>
PR c++/32177

View File

@ -0,0 +1,17 @@
/* { dg-do compile } */
typedef unsigned long int *mp_ptr;
typedef const unsigned long int *mp_srcptr;
gmpz_export (void *data)
{
mp_srcptr zp;
int count, i;
mp_ptr __dst = ((mp_ptr) data);
mp_srcptr __src = (zp);
for (i = 0; i < count; i++)
{
__asm__ ("bswap %q0": "=r" (*__dst):"0" (*(__src)));
__src++;
}
}
/* { dg-final { cleanup-tree-dump "vect" } } */

View File

@ -173,9 +173,6 @@ vect_determine_vectorization_factor (loop_vec_info loop_vinfo)
print_generic_expr (vect_dump, stmt, TDF_SLIM);
}
if (TREE_CODE (stmt) != GIMPLE_MODIFY_STMT)
continue;
gcc_assert (stmt_info);
/* skip stmts which do not need to be vectorized. */
@ -187,6 +184,16 @@ vect_determine_vectorization_factor (loop_vec_info loop_vinfo)
continue;
}
if (TREE_CODE (stmt) != GIMPLE_MODIFY_STMT)
{
if (vect_print_dump_info (REPORT_UNVECTORIZED_LOOPS))
{
fprintf (vect_dump, "not vectorized: irregular stmt.");
print_generic_expr (vect_dump, stmt, TDF_SLIM);
}
return false;
}
if (!GIMPLE_STMT_P (stmt)
&& VECTOR_MODE_P (TYPE_MODE (TREE_TYPE (stmt))))
{