aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-data-refs.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2011-12-11 22:01:00 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2011-12-11 22:01:00 +0100
commit9c2390853e656fa61d6af8919e9718f3eb790060 (patch)
treecdb0adbe66fc88a9ace1d03bba0ff77d7399c28d /gcc/tree-vect-data-refs.c
parentfba5ace06b2af2a403a489fa2bb490e6cd3137cc (diff)
downloadgcc-9c2390853e656fa61d6af8919e9718f3eb790060.zip
gcc-9c2390853e656fa61d6af8919e9718f3eb790060.tar.gz
gcc-9c2390853e656fa61d6af8919e9718f3eb790060.tar.bz2
re PR tree-optimization/51485 (ICE in vectorizable_assignment)
PR tree-optimization/51485 * tree-vect-data-refs.c (vect_analyze_data_refs): Give up on DRs in call stmts. * g++.dg/vect/pr51485.cc: New test. From-SVN: r182212
Diffstat (limited to 'gcc/tree-vect-data-refs.c')
-rw-r--r--gcc/tree-vect-data-refs.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c
index 8111bdc..6a85b7b 100644
--- a/gcc/tree-vect-data-refs.c
+++ b/gcc/tree-vect-data-refs.c
@@ -2896,6 +2896,26 @@ vect_analyze_data_refs (loop_vec_info loop_vinfo,
return false;
}
+ if (is_gimple_call (stmt))
+ {
+ if (vect_print_dump_info (REPORT_UNVECTORIZED_LOCATIONS))
+ {
+ fprintf (vect_dump, "not vectorized: dr in a call ");
+ print_gimple_stmt (vect_dump, stmt, 0, TDF_SLIM);
+ }
+
+ if (bb_vinfo)
+ {
+ STMT_VINFO_VECTORIZABLE (stmt_info) = false;
+ stop_bb_analysis = true;
+ continue;
+ }
+
+ if (gather)
+ free_data_ref (dr);
+ return false;
+ }
+
/* Update DR field in stmt_vec_info struct. */
/* If the dataref is in an inner-loop of the loop that is considered for