From f698fccf099a69415619858062431c9383caf070 Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Tue, 31 Jul 2018 14:23:34 +0000 Subject: [PATCH] [21/46] Make grouped_stores and reduction_chains use stmt_vec_infos This patch changes the SLP lists grouped_stores and reduction_chains from auto_vec to auto_vec. It was easier to do them together due to the way vect_analyze_slp is structured. 2018-07-31 Richard Sandiford gcc/ * tree-vectorizer.h (vec_info::grouped_stores): Change from an auto_vec to an auto_vec. (_loop_vec_info::reduction_chains): Likewise. * tree-vect-loop.c (vect_fixup_scalar_cycles_with_patterns): Update accordingly. * tree-vect-slp.c (vect_analyze_slp): Likewise. From-SVN: r263136 --- gcc/ChangeLog | 9 +++++++++ gcc/tree-vect-loop.c | 8 ++++---- gcc/tree-vect-slp.c | 12 +++++------- gcc/tree-vectorizer.h | 4 ++-- 4 files changed, 20 insertions(+), 13 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7d62f29..91deba0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,14 @@ 2018-07-31 Richard Sandiford + * tree-vectorizer.h (vec_info::grouped_stores): Change from + an auto_vec to an auto_vec. + (_loop_vec_info::reduction_chains): Likewise. + * tree-vect-loop.c (vect_fixup_scalar_cycles_with_patterns): Update + accordingly. + * tree-vect-slp.c (vect_analyze_slp): Likewise. + +2018-07-31 Richard Sandiford + * tree-vectorizer.h (_stmt_vec_info::first_element): Change from a gimple stmt to a stmt_vec_info. (_stmt_vec_info::next_element): Likewise. diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index 0b5631b..e611e99 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -677,13 +677,13 @@ vect_fixup_reduc_chain (gimple *stmt) static void vect_fixup_scalar_cycles_with_patterns (loop_vec_info loop_vinfo) { - gimple *first; + stmt_vec_info first; unsigned i; FOR_EACH_VEC_ELT (LOOP_VINFO_REDUCTION_CHAINS (loop_vinfo), i, first) - if (STMT_VINFO_IN_PATTERN_P (vinfo_for_stmt (first))) + if (STMT_VINFO_IN_PATTERN_P (first)) { - stmt_vec_info next = REDUC_GROUP_NEXT_ELEMENT (vinfo_for_stmt (first)); + stmt_vec_info next = REDUC_GROUP_NEXT_ELEMENT (first); while (next) { if (! STMT_VINFO_IN_PATTERN_P (next)) @@ -696,7 +696,7 @@ vect_fixup_scalar_cycles_with_patterns (loop_vec_info loop_vinfo) { vect_fixup_reduc_chain (first); LOOP_VINFO_REDUCTION_CHAINS (loop_vinfo)[i] - = STMT_VINFO_RELATED_STMT (vinfo_for_stmt (first)); + = STMT_VINFO_RELATED_STMT (first); } } } diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c index 665ee4f..6787795 100644 --- a/gcc/tree-vect-slp.c +++ b/gcc/tree-vect-slp.c @@ -2202,7 +2202,7 @@ bool vect_analyze_slp (vec_info *vinfo, unsigned max_tree_size) { unsigned int i; - gimple *first_element; + stmt_vec_info first_element; DUMP_VECT_SCOPE ("vect_analyze_slp"); @@ -2220,17 +2220,15 @@ vect_analyze_slp (vec_info *vinfo, unsigned max_tree_size) max_tree_size)) { /* Dissolve reduction chain group. */ - gimple *stmt = first_element; - while (stmt) + stmt_vec_info vinfo = first_element; + while (vinfo) { - stmt_vec_info vinfo = vinfo_for_stmt (stmt); stmt_vec_info next = REDUC_GROUP_NEXT_ELEMENT (vinfo); REDUC_GROUP_FIRST_ELEMENT (vinfo) = NULL; REDUC_GROUP_NEXT_ELEMENT (vinfo) = NULL; - stmt = next; + vinfo = next; } - STMT_VINFO_DEF_TYPE (vinfo_for_stmt (first_element)) - = vect_internal_def; + STMT_VINFO_DEF_TYPE (first_element) = vect_internal_def; } } diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h index fe49843..24020d2 100644 --- a/gcc/tree-vectorizer.h +++ b/gcc/tree-vectorizer.h @@ -259,7 +259,7 @@ struct vec_info { /* All interleaving chains of stores, represented by the first stmt in the chain. */ - auto_vec grouped_stores; + auto_vec grouped_stores; /* Cost data used by the target cost model. */ void *target_cost_data; @@ -479,7 +479,7 @@ typedef struct _loop_vec_info : public vec_info { /* All reduction chains in the loop, represented by the first stmt in the chain. */ - auto_vec reduction_chains; + auto_vec reduction_chains; /* Cost vector for a single scalar iteration. */ auto_vec scalar_cost_vec; -- 2.7.4