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