From d6efd7d667d07cbf0dddba3961dc7681f3f644ea Mon Sep 17 00:00:00 2001 From: Dorit Naishlos Date: Thu, 17 Mar 2005 21:08:06 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 6 ++++++ gcc/tree-vect-analyze.c | 11 +++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dd11e2c1944..19f8137edf4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-03-17 Dorit Naishlos + + 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 * config/h8300/h8300-protos.h: Remove prototypes for diff --git a/gcc/tree-vect-analyze.c b/gcc/tree-vect-analyze.c index 0ee6f0c362c..dd9342a8136 100644 --- a/gcc/tree-vect-analyze.c +++ b/gcc/tree-vect-analyze.c @@ -1401,8 +1401,7 @@ vect_analyze_pointer_ref_access (tree memref, tree stmt, bool is_read, return NULL; } - reftype = TREE_TYPE (init); - if (!POINTER_TYPE_P (reftype)) + if (!POINTER_TYPE_P (TREE_TYPE (init))) { if (vect_print_dump_info (REPORT_UNVECTORIZED_LOOPS, 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); 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. */ if (!integer_zerop (size_binop (TRUNC_MOD_EXPR, *ptr_step, fold_convert (ssizetype, TYPE_SIZE_UNIT (innertype)))))