aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vectorizer.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2019-06-13 10:10:05 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2019-06-13 10:10:05 +0000
commit2778a719bebf7a32c34638cb39e9697c93ed484a (patch)
treeb0fd6841c2d5a59a0187fd41497e3a2c69e4a2a7 /gcc/tree-vectorizer.c
parentfa8ba8b84cf4f1caf581b09d808d6e57b1ff2843 (diff)
downloadgcc-2778a719bebf7a32c34638cb39e9697c93ed484a.zip
gcc-2778a719bebf7a32c34638cb39e9697c93ed484a.tar.gz
gcc-2778a719bebf7a32c34638cb39e9697c93ed484a.tar.bz2
tree-vectorizer.h (vect_loop_vectorized_call): Declare.
2019-06-13 Richard Biener <rguenther@suse.de> * tree-vectorizer.h (vect_loop_vectorized_call): Declare. * tree-vectorizer.c (vect_loop_vectorized_call): Export and also return the condition stmt. * tree-vect-loop-manip.c (vect_loop_versioning): Compute outermost loop we can version and version that, reusing the loop version created by if-conversion instead of versioning again. * gcc.dg/vect/vect-version-1.c: New testcase. * gcc.dg/vect/vect-version-2.c: Likewise. From-SVN: r272239
Diffstat (limited to 'gcc/tree-vectorizer.c')
-rw-r--r--gcc/tree-vectorizer.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/tree-vectorizer.c b/gcc/tree-vectorizer.c
index 4f6c65f..325ef58 100644
--- a/gcc/tree-vectorizer.c
+++ b/gcc/tree-vectorizer.c
@@ -727,8 +727,8 @@ vect_free_loop_info_assumptions (struct loop *loop)
/* If LOOP has been versioned during ifcvt, return the internal call
guarding it. */
-static gimple *
-vect_loop_vectorized_call (struct loop *loop)
+gimple *
+vect_loop_vectorized_call (struct loop *loop, gcond **cond)
{
basic_block bb = loop_preheader_edge (loop)->src;
gimple *g;
@@ -744,6 +744,8 @@ vect_loop_vectorized_call (struct loop *loop)
while (1);
if (g && gimple_code (g) == GIMPLE_COND)
{
+ if (cond)
+ *cond = as_a <gcond *> (g);
gimple_stmt_iterator gsi = gsi_for_stmt (g);
gsi_prev (&gsi);
if (!gsi_end_p (gsi))