Avoid more temporaries in IVOPTs

This avoids use of valid_gimple_rhs_p and instead gimplifies to
such a RHS, avoiding more SSA copies being generated by IVOPTs.

2021-04-14  Richard Biener  <rguenther@suse.de>

	* tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Avoid
	valid_gimple_rhs_p by instead gimplifying to one.
This commit is contained in:
Richard Biener 2021-04-14 12:48:37 +02:00
parent cbca62831c
commit b26485f1af
1 changed files with 7 additions and 6 deletions

View File

@ -7286,12 +7286,13 @@ rewrite_use_nonlinear_expr (struct ivopts_data *data,
}
comp = fold_convert (type, comp);
if (!valid_gimple_rhs_p (comp)
|| (gimple_code (use->stmt) != GIMPLE_PHI
/* We can't allow re-allocating the stmt as it might be pointed
to still. */
&& (get_gimple_rhs_num_ops (TREE_CODE (comp))
>= gimple_num_ops (gsi_stmt (bsi)))))
comp = force_gimple_operand (comp, &seq, false, NULL);
gimple_seq_add_seq (&stmt_list, seq);
if (gimple_code (use->stmt) != GIMPLE_PHI
/* We can't allow re-allocating the stmt as it might be pointed
to still. */
&& (get_gimple_rhs_num_ops (TREE_CODE (comp))
>= gimple_num_ops (gsi_stmt (bsi))))
{
comp = force_gimple_operand (comp, &seq, true, NULL);
gimple_seq_add_seq (&stmt_list, seq);