Hi,
After my patch I believe the only way orig_loop_vinfo is not null when
calling vect_analyze_loop is when it is called for an epilogue and in
that case we no longer use that variable, since
LOOP_VINFO_ORIG_LOOP_INFO is already set for the epilogue's
loop_vec_info. This patch removes that parameter.
Bootstrapped on x86_64 and aarch64.
Is this OK for trunk?
Cheers,
Andre
gcc/ChangeLog:
2019-10-31 Andre Vieira <andre.simoesdiasvie...@arm.com>
* tree-vect-loop.c (vect_analyze_loop): Remove orig_loop_vinfo
parameter.
* tree-vectorizer.h (vect_analyze_loop): Update declaration.
* tree-vectorizer.c (try_vectorize_loop_1): Update calls to
vect_analyze_loop.
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index 9b7d2485b7cae81578c6a7d33304dc48134cc850..f3deada90cb30c3d5a69a8ca243b0b7687d356cc 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -2352,8 +2352,7 @@ again:
loop_vec_info struct. If ORIG_LOOP_VINFO is not NULL epilogue must
be vectorized. */
opt_loop_vec_info
-vect_analyze_loop (class loop *loop, loop_vec_info orig_loop_vinfo,
- vec_info_shared *shared)
+vect_analyze_loop (class loop *loop, vec_info_shared *shared)
{
auto_vector_sizes vector_sizes;
@@ -2405,9 +2404,7 @@ vect_analyze_loop (class loop *loop, loop_vec_info orig_loop_vinfo,
bool fatal = false;
- if (orig_loop_vinfo)
- LOOP_VINFO_ORIG_LOOP_INFO (loop_vinfo) = orig_loop_vinfo;
- else if (vect_epilogues && first_loop_vinfo)
+ if (vect_epilogues && first_loop_vinfo)
LOOP_VINFO_ORIG_LOOP_INFO (loop_vinfo) = first_loop_vinfo;
opt_result res = vect_analyze_loop_2 (loop_vinfo, fatal, &n_stmts);
diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h
index 71b5f380e2c91a7a551f6e26920bb17809abedf0..ce8d5c6a07c63d757ebbff445a457a3ec6464bfa 100644
--- a/gcc/tree-vectorizer.h
+++ b/gcc/tree-vectorizer.h
@@ -1716,9 +1716,7 @@ extern bool check_reduction_path (dump_user_location_t, loop_p, gphi *, tree,
enum tree_code);
extern bool needs_fold_left_reduction_p (tree, tree_code);
/* Drive for loop analysis stage. */
-extern opt_loop_vec_info vect_analyze_loop (class loop *,
- loop_vec_info,
- vec_info_shared *);
+extern opt_loop_vec_info vect_analyze_loop (class loop *, vec_info_shared *);
extern tree vect_build_loop_niters (loop_vec_info, bool * = NULL);
extern void vect_gen_vector_loop_niters (loop_vec_info, tree, tree *,
tree *, bool);
diff --git a/gcc/tree-vectorizer.c b/gcc/tree-vectorizer.c
index 8e02647c7bad6ce4a92a225a4d37f82439f771ae..0f00383e3b33098189b2f656a8bd02d0148dd888 100644
--- a/gcc/tree-vectorizer.c
+++ b/gcc/tree-vectorizer.c
@@ -865,8 +865,7 @@ set_uid_loop_bbs (loop_vec_info loop_vinfo, gimple *loop_vectorized_call)
static unsigned
try_vectorize_loop_1 (hash_table<simduid_to_vf> *&simduid_to_vf_htab,
- unsigned *num_vectorized_loops,
- loop_p loop, loop_vec_info orig_loop_vinfo,
+ unsigned *num_vectorized_loops, loop_p loop,
gimple *loop_vectorized_call,
gimple *loop_dist_alias_call)
{
@@ -890,7 +889,7 @@ try_vectorize_loop_1 (hash_table<simduid_to_vf> *&simduid_to_vf_htab,
else
{
/* Try to analyze the loop, retaining an opt_problem if dump_enabled_p. */
- loop_vinfo = vect_analyze_loop (loop, orig_loop_vinfo, &shared);
+ loop_vinfo = vect_analyze_loop (loop, &shared);
loop->aux = loop_vinfo;
}
@@ -1025,7 +1024,7 @@ try_vectorize_loop_1 (hash_table<simduid_to_vf> *&simduid_to_vf_htab,
*/
unsigned dont_count = *num_vectorized_loops;
ret |= try_vectorize_loop_1 (simduid_to_vf_htab, &dont_count,
- new_loop, loop_vinfo, NULL, NULL);
+ new_loop, NULL, NULL);
}
return ret;
@@ -1042,8 +1041,7 @@ try_vectorize_loop (hash_table<simduid_to_vf> *&simduid_to_vf_htab,
|| loop->force_vectorize))
return 0;
- return try_vectorize_loop_1 (simduid_to_vf_htab, num_vectorized_loops,
- loop, NULL,
+ return try_vectorize_loop_1 (simduid_to_vf_htab, num_vectorized_loops, loop,
vect_loop_vectorized_call (loop),
vect_loop_dist_alias_call (loop));
}