summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2021-04-14 12:48:37 +0200
committerRichard Biener <rguenther@suse.de>2021-04-23 10:28:10 +0200
commitb26485f1af45423980b7bc1206411cf4b8bb84b6 (patch)
tree66234fc08e22a28d5f9c5a89d0cd46c0eb225c3b /gcc
parentcbca62831cb7c1c7c20d67fcf929f156b09923bf (diff)
downloadgcc-b26485f1af45423980b7bc1206411cf4b8bb84b6.tar.gz
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.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/tree-ssa-loop-ivopts.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c
index 4012ae3f19d..12a8a49a307 100644
--- a/gcc/tree-ssa-loop-ivopts.c
+++ b/gcc/tree-ssa-loop-ivopts.c
@@ -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);