diff options
author | Richard Biener <rguenther@suse.de> | 2019-06-13 10:10:05 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2019-06-13 10:10:05 +0000 |
commit | 2778a719bebf7a32c34638cb39e9697c93ed484a (patch) | |
tree | b0fd6841c2d5a59a0187fd41497e3a2c69e4a2a7 /gcc/tree-vectorizer.c | |
parent | fa8ba8b84cf4f1caf581b09d808d6e57b1ff2843 (diff) | |
download | gcc-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.c | 6 |
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)) |