OSDN Git Service

PR tree-optimization/20474
authordorit <dorit@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 17 Mar 2005 21:08:06 +0000 (21:08 +0000)
committerdorit <dorit@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 17 Mar 2005 21:08:06 +0000 (21:08 +0000)
        * tree-vect-analyze.c (vect_analyze_pointer_ref_access): Check the
        size_type of the relevant pointer. Check for COMPLETE_TYPE_P.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@96632 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/tree-vect-analyze.c

index dd11e2c..19f8137 100644 (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>
 
        * config/h8300/h8300-protos.h: Remove prototypes for
index 0ee6f0c..dd9342a 100644 (file)
@@ -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)))))