The following reverts the change done to vectorizable_store/load to always pass the SLP node to the costing hook, in particular for the cases of costing scalar loads and stores.
* tree-vect-stmts.cc (vectorizable_store): For scalar_store costing only pass in stmt_info. (vectorizable_load): For scalar_load costing only pass in stmt_info. --- gcc/tree-vect-stmts.cc | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc index eb0b0d00e75..7075948a19a 100644 --- a/gcc/tree-vect-stmts.cc +++ b/gcc/tree-vect-stmts.cc @@ -9402,8 +9402,7 @@ vectorizable_store (vec_info *vinfo, unsigned int cnunits = vect_nunits_for_cost (vectype); inside_cost += record_stmt_cost (cost_vec, cnunits, scalar_store, - stmt_info, slp_node, 0, - vect_body); + stmt_info, 0, vect_body); continue; } @@ -9471,7 +9470,7 @@ vectorizable_store (vec_info *vinfo, unsigned int cnunits = vect_nunits_for_cost (vectype); inside_cost += record_stmt_cost (cost_vec, cnunits, scalar_store, - stmt_info, slp_node, 0, vect_body); + stmt_info, 0, vect_body); continue; } @@ -9586,7 +9585,7 @@ vectorizable_store (vec_info *vinfo, stmt_info, slp_node, 0, vect_body); inside_cost += record_stmt_cost (cost_vec, cnunits, scalar_store, - stmt_info, slp_node, 0, vect_body); + stmt_info, 0, vect_body); continue; } @@ -10034,7 +10033,7 @@ vectorizable_store (vec_info *vinfo, /* Loads. */ prologue_cost += record_stmt_cost (cost_vec, ncopies * nregs, scalar_load, - stmt_info, slp_node, 0, vect_epilogue); + stmt_info, 0, vect_epilogue); } } } @@ -10607,8 +10606,7 @@ vectorizable_load (vec_info *vinfo, enum vect_cost_model_location cost_loc = hoist_p ? vect_prologue : vect_body; unsigned int cost = record_stmt_cost (cost_vec, 1, scalar_load, - stmt_info, slp_node, 0, - cost_loc); + stmt_info, 0, cost_loc); cost += record_stmt_cost (cost_vec, 1, scalar_to_vec, stmt_info, slp_node, 0, cost_loc); unsigned int prologue_cost = hoist_p ? cost : 0; @@ -10875,8 +10873,7 @@ vectorizable_load (vec_info *vinfo, n_adjacent_loads++; else inside_cost += record_stmt_cost (cost_vec, 1, scalar_load, - stmt_info, slp_node, 0, - vect_body); + stmt_info, 0, vect_body); continue; } tree this_off = build_int_cst (TREE_TYPE (alias_off), @@ -11541,7 +11538,7 @@ vectorizable_load (vec_info *vinfo, unsigned int cnunits = vect_nunits_for_cost (vectype); inside_cost = record_stmt_cost (cost_vec, cnunits, scalar_load, - stmt_info, slp_node, 0, vect_body); + stmt_info, 0, vect_body); continue; } if (STMT_VINFO_GATHER_SCATTER_P (stmt_info)) @@ -11617,7 +11614,7 @@ vectorizable_load (vec_info *vinfo, unsigned int cnunits = vect_nunits_for_cost (vectype); inside_cost = record_stmt_cost (cost_vec, cnunits, scalar_load, - stmt_info, slp_node, 0, vect_body); + stmt_info, 0, vect_body); continue; } poly_uint64 offset_nunits @@ -11752,7 +11749,7 @@ vectorizable_load (vec_info *vinfo, vector. */ inside_cost = record_stmt_cost (cost_vec, const_nunits, scalar_load, - stmt_info, slp_node, 0, vect_body); + stmt_info, 0, vect_body); inside_cost = record_stmt_cost (cost_vec, 1, vec_construct, stmt_info, slp_node, 0, vect_body); -- 2.43.0