Commit eca52fdd by Richard Sandiford Committed by Richard Sandiford

[30/46] Use stmt_vec_infos rather than gimple stmts for worklists

2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* tree-vect-loop.c (vect_analyze_scalar_cycles_1): Change the type
	of the worklist from a vector of gimple stmts to a vector of
	stmt_vec_infos.
	* tree-vect-stmts.c (vect_mark_relevant, process_use)
	(vect_mark_stmts_to_be_vectorized): Likewise

From-SVN: r263145
parent a1824cfd
2018-07-31 Richard Sandiford <richard.sandiford@arm.com> 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
* tree-vect-loop.c (vect_analyze_scalar_cycles_1): Change the type
of the worklist from a vector of gimple stmts to a vector of
stmt_vec_infos.
* tree-vect-stmts.c (vect_mark_relevant, process_use)
(vect_mark_stmts_to_be_vectorized): Likewise
2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
* tree-vect-loop.c (vect_analyze_loop_operations): Look up the * tree-vect-loop.c (vect_analyze_loop_operations): Look up the
statement before passing it to vect_analyze_stmt. statement before passing it to vect_analyze_stmt.
(vect_create_epilog_for_reduction): Use a stmt_vec_info to walk (vect_create_epilog_for_reduction): Use a stmt_vec_info to walk
......
...@@ -474,7 +474,7 @@ vect_analyze_scalar_cycles_1 (loop_vec_info loop_vinfo, struct loop *loop) ...@@ -474,7 +474,7 @@ vect_analyze_scalar_cycles_1 (loop_vec_info loop_vinfo, struct loop *loop)
{ {
basic_block bb = loop->header; basic_block bb = loop->header;
tree init, step; tree init, step;
auto_vec<gimple *, 64> worklist; auto_vec<stmt_vec_info, 64> worklist;
gphi_iterator gsi; gphi_iterator gsi;
bool double_reduc; bool double_reduc;
...@@ -543,9 +543,9 @@ vect_analyze_scalar_cycles_1 (loop_vec_info loop_vinfo, struct loop *loop) ...@@ -543,9 +543,9 @@ vect_analyze_scalar_cycles_1 (loop_vec_info loop_vinfo, struct loop *loop)
/* Second - identify all reductions and nested cycles. */ /* Second - identify all reductions and nested cycles. */
while (worklist.length () > 0) while (worklist.length () > 0)
{ {
gimple *phi = worklist.pop (); stmt_vec_info stmt_vinfo = worklist.pop ();
gphi *phi = as_a <gphi *> (stmt_vinfo->stmt);
tree def = PHI_RESULT (phi); tree def = PHI_RESULT (phi);
stmt_vec_info stmt_vinfo = vinfo_for_stmt (phi);
if (dump_enabled_p ()) if (dump_enabled_p ())
{ {
......
...@@ -194,7 +194,7 @@ vect_clobber_variable (gimple *stmt, gimple_stmt_iterator *gsi, tree var) ...@@ -194,7 +194,7 @@ vect_clobber_variable (gimple *stmt, gimple_stmt_iterator *gsi, tree var)
Mark STMT as "relevant for vectorization" and add it to WORKLIST. */ Mark STMT as "relevant for vectorization" and add it to WORKLIST. */
static void static void
vect_mark_relevant (vec<gimple *> *worklist, gimple *stmt, vect_mark_relevant (vec<stmt_vec_info> *worklist, gimple *stmt,
enum vect_relevant relevant, bool live_p) enum vect_relevant relevant, bool live_p)
{ {
stmt_vec_info stmt_info = vinfo_for_stmt (stmt); stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
...@@ -453,7 +453,7 @@ exist_non_indexing_operands_for_use_p (tree use, gimple *stmt) ...@@ -453,7 +453,7 @@ exist_non_indexing_operands_for_use_p (tree use, gimple *stmt)
static bool static bool
process_use (gimple *stmt, tree use, loop_vec_info loop_vinfo, process_use (gimple *stmt, tree use, loop_vec_info loop_vinfo,
enum vect_relevant relevant, vec<gimple *> *worklist, enum vect_relevant relevant, vec<stmt_vec_info> *worklist,
bool force) bool force)
{ {
stmt_vec_info stmt_vinfo = vinfo_for_stmt (stmt); stmt_vec_info stmt_vinfo = vinfo_for_stmt (stmt);
...@@ -618,16 +618,14 @@ vect_mark_stmts_to_be_vectorized (loop_vec_info loop_vinfo) ...@@ -618,16 +618,14 @@ vect_mark_stmts_to_be_vectorized (loop_vec_info loop_vinfo)
basic_block *bbs = LOOP_VINFO_BBS (loop_vinfo); basic_block *bbs = LOOP_VINFO_BBS (loop_vinfo);
unsigned int nbbs = loop->num_nodes; unsigned int nbbs = loop->num_nodes;
gimple_stmt_iterator si; gimple_stmt_iterator si;
gimple *stmt;
unsigned int i; unsigned int i;
stmt_vec_info stmt_vinfo;
basic_block bb; basic_block bb;
bool live_p; bool live_p;
enum vect_relevant relevant; enum vect_relevant relevant;
DUMP_VECT_SCOPE ("vect_mark_stmts_to_be_vectorized"); DUMP_VECT_SCOPE ("vect_mark_stmts_to_be_vectorized");
auto_vec<gimple *, 64> worklist; auto_vec<stmt_vec_info, 64> worklist;
/* 1. Init worklist. */ /* 1. Init worklist. */
for (i = 0; i < nbbs; i++) for (i = 0; i < nbbs; i++)
...@@ -665,17 +663,17 @@ vect_mark_stmts_to_be_vectorized (loop_vec_info loop_vinfo) ...@@ -665,17 +663,17 @@ vect_mark_stmts_to_be_vectorized (loop_vec_info loop_vinfo)
use_operand_p use_p; use_operand_p use_p;
ssa_op_iter iter; ssa_op_iter iter;
stmt = worklist.pop (); stmt_vec_info stmt_vinfo = worklist.pop ();
if (dump_enabled_p ()) if (dump_enabled_p ())
{ {
dump_printf_loc (MSG_NOTE, vect_location, "worklist: examine stmt: "); dump_printf_loc (MSG_NOTE, vect_location,
dump_gimple_stmt (MSG_NOTE, TDF_SLIM, stmt, 0); "worklist: examine stmt: ");
dump_gimple_stmt (MSG_NOTE, TDF_SLIM, stmt_vinfo->stmt, 0);
} }
/* Examine the USEs of STMT. For each USE, mark the stmt that defines it /* Examine the USEs of STMT. For each USE, mark the stmt that defines it
(DEF_STMT) as relevant/irrelevant according to the relevance property (DEF_STMT) as relevant/irrelevant according to the relevance property
of STMT. */ of STMT. */
stmt_vinfo = vinfo_for_stmt (stmt);
relevant = STMT_VINFO_RELEVANT (stmt_vinfo); relevant = STMT_VINFO_RELEVANT (stmt_vinfo);
/* Generally, the relevance property of STMT (in STMT_VINFO_RELEVANT) is /* Generally, the relevance property of STMT (in STMT_VINFO_RELEVANT) is
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment