diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2018-07-31 14:23:34 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2018-07-31 14:23:34 +0000 |
commit | f698fccf099a69415619858062431c9383caf070 (patch) | |
tree | b6feb44b4ea43dc76e88f7c5f85471d232ce0b73 /gcc | |
parent | bffb8014d0566af64c3cd5c7afac21c125a14df2 (diff) | |
download | gcc-f698fccf099a69415619858062431c9383caf070.zip gcc-f698fccf099a69415619858062431c9383caf070.tar.gz gcc-f698fccf099a69415619858062431c9383caf070.tar.bz2 |
[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<gimple *> to auto_vec<stmt_vec_info>. It was easier
to do them together due to the way vect_analyze_slp is structured.
2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* tree-vectorizer.h (vec_info::grouped_stores): Change from
an auto_vec<gimple *> to an auto_vec<stmt_vec_info>.
(_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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/tree-vect-loop.c | 8 | ||||
-rw-r--r-- | gcc/tree-vect-slp.c | 12 | ||||
-rw-r--r-- | 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 <richard.sandiford@arm.com> + * tree-vectorizer.h (vec_info::grouped_stores): Change from + an auto_vec<gimple *> to an auto_vec<stmt_vec_info>. + (_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 <richard.sandiford@arm.com> + * 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<gimple *> grouped_stores; + auto_vec<stmt_vec_info> 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<gimple *> reduction_chains; + auto_vec<stmt_vec_info> reduction_chains; /* Cost vector for a single scalar iteration. */ auto_vec<stmt_info_for_cost> scalar_cost_vec; |