bb-reorder.c (sanitize_hot_paths): Release hot_bbs_to_check.

2018-05-04  Richard Biener  <rguenther@suse.de>

	* bb-reorder.c (sanitize_hot_paths): Release hot_bbs_to_check.
	* gimple-ssa-store-merging.c
	(imm_store_chain_info::output_merged_store): Remove redundant create,
	release split_store vector contents on failure.
	* tree-vect-slp.c (vect_schedule_slp_instance): Avoid leaking
	scalar stmt vector on cache hit.

From-SVN: r259932
This commit is contained in:
Richard Biener 2018-05-04 13:33:15 +00:00 committed by Richard Biener
parent 2c2aa74d1d
commit dd17274465
4 changed files with 21 additions and 8 deletions

View File

@ -1,3 +1,12 @@
2018-05-04 Richard Biener <rguenther@suse.de>
* bb-reorder.c (sanitize_hot_paths): Release hot_bbs_to_check.
* gimple-ssa-store-merging.c
(imm_store_chain_info::output_merged_store): Remove redundant create,
release split_store vector contents on failure.
* tree-vect-slp.c (vect_schedule_slp_instance): Avoid leaking
scalar stmt vector on cache hit.
2018-05-04 Segher Boessenkool <segher@kernel.crashing.org>
* common/config/rs6000/rs6000-common.c (rs6000_handle_option): Remove

View File

@ -1572,6 +1572,7 @@ sanitize_hot_paths (bool walk_up, unsigned int cold_bb_count,
hot_bbs_to_check.safe_push (reach_bb);
}
}
hot_bbs_to_check.release ();
return cold_bb_count;
}

View File

@ -3343,6 +3343,8 @@ invert_op (split_store *split_store, int idx, tree int_type, tree &mask)
bool
imm_store_chain_info::output_merged_store (merged_store_group *group)
{
split_store *split_store;
unsigned int i;
unsigned HOST_WIDE_INT start_byte_pos
= group->bitregion_start / BITS_PER_UNIT;
@ -3351,7 +3353,6 @@ imm_store_chain_info::output_merged_store (merged_store_group *group)
return false;
auto_vec<struct split_store *, 32> split_stores;
split_stores.create (0);
bool allow_unaligned_store
= !STRICT_ALIGNMENT && PARAM_VALUE (PARAM_STORE_MERGING_ALLOW_UNALIGNED);
bool allow_unaligned_load = allow_unaligned_store;
@ -3378,6 +3379,8 @@ imm_store_chain_info::output_merged_store (merged_store_group *group)
fprintf (dump_file, "Exceeded original number of stmts (%u)."
" Not profitable to emit new sequence.\n",
orig_num_stmts);
FOR_EACH_VEC_ELT (split_stores, i, split_store)
delete split_store;
return false;
}
if (total_orig <= total_new)
@ -3389,6 +3392,8 @@ imm_store_chain_info::output_merged_store (merged_store_group *group)
" not larger than estimated number of new"
" stmts (%u).\n",
total_orig, total_new);
FOR_EACH_VEC_ELT (split_stores, i, split_store)
delete split_store;
return false;
}
@ -3453,8 +3458,6 @@ imm_store_chain_info::output_merged_store (merged_store_group *group)
}
gimple *stmt = NULL;
split_store *split_store;
unsigned int i;
auto_vec<gimple *, 32> orig_stmts;
gimple_seq this_seq;
tree addr = force_gimple_operand_1 (unshare_expr (base_addr), &this_seq,

View File

@ -4064,15 +4064,15 @@ vect_schedule_slp_instance (slp_tree node, slp_instance instance,
/* See if we have already vectorized the same set of stmts and reuse their
vectorized stmts. */
slp_tree &leader
= bst_map->get_or_insert (SLP_TREE_SCALAR_STMTS (node).copy ());
if (leader)
if (slp_tree *leader = bst_map->get (SLP_TREE_SCALAR_STMTS (node)))
{
SLP_TREE_VEC_STMTS (node).safe_splice (SLP_TREE_VEC_STMTS (leader));
SLP_TREE_VEC_STMTS (node).safe_splice (SLP_TREE_VEC_STMTS (*leader));
SLP_TREE_NUMBER_OF_VEC_STMTS (node)
= SLP_TREE_NUMBER_OF_VEC_STMTS (*leader);
return false;
}
leader = node;
bst_map->put (SLP_TREE_SCALAR_STMTS (node).copy (), node);
FOR_EACH_VEC_ELT (SLP_TREE_CHILDREN (node), i, child)
vect_schedule_slp_instance (child, instance, bst_map);