re PR tree-optimization/20474 (ICE while compiling openmotif-2.2.3 with -ftree-vectorize)

PR tree-optimization/20474
        * tree-vect-analyze.c (vect_analyze_pointer_ref_access): Check the
        size_type of the relevant pointer. Check for COMPLETE_TYPE_P.

From-SVN: r96632
This commit is contained in:
Dorit Naishlos 2005-03-17 21:08:06 +00:00 committed by Dorit Nuzman
parent 981c7dcef8
commit d6efd7d667
2 changed files with 15 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2005-03-17 Dorit Naishlos <dorit@il.ibm.com>
PR tree-optimization/20474
* tree-vect-analyze.c (vect_analyze_pointer_ref_access): Check the
size_type of the relevant pointer. Check for COMPLETE_TYPE_P.
2005-03-17 Kazu Hirata <kazu@cs.umass.edu> 2005-03-17 Kazu Hirata <kazu@cs.umass.edu>
* config/h8300/h8300-protos.h: Remove prototypes for * config/h8300/h8300-protos.h: Remove prototypes for

View File

@ -1401,8 +1401,7 @@ vect_analyze_pointer_ref_access (tree memref, tree stmt, bool is_read,
return NULL; return NULL;
} }
reftype = TREE_TYPE (init); if (!POINTER_TYPE_P (TREE_TYPE (init)))
if (!POINTER_TYPE_P (reftype))
{ {
if (vect_print_dump_info (REPORT_UNVECTORIZED_LOOPS, if (vect_print_dump_info (REPORT_UNVECTORIZED_LOOPS,
LOOP_LOC (loop_vinfo))) LOOP_LOC (loop_vinfo)))
@ -1412,6 +1411,14 @@ vect_analyze_pointer_ref_access (tree memref, tree stmt, bool is_read,
*ptr_step = fold_convert (ssizetype, step); *ptr_step = fold_convert (ssizetype, step);
innertype = TREE_TYPE (reftype); innertype = TREE_TYPE (reftype);
if (!COMPLETE_TYPE_P (innertype))
{
if (vect_print_dump_info (REPORT_UNVECTORIZED_LOOPS,
LOOP_LOC (loop_vinfo)))
fprintf (vect_dump, "not vectorized: pointer to incomplete type.");
return NULL;
}
/* Check that STEP is a multiple of type size. */ /* Check that STEP is a multiple of type size. */
if (!integer_zerop (size_binop (TRUNC_MOD_EXPR, *ptr_step, if (!integer_zerop (size_binop (TRUNC_MOD_EXPR, *ptr_step,
fold_convert (ssizetype, TYPE_SIZE_UNIT (innertype))))) fold_convert (ssizetype, TYPE_SIZE_UNIT (innertype)))))