From 086031c058598512d09bf898e4db3735b3e1f22c Mon Sep 17 00:00:00 2001 From: Alex Coplan <alex.coplan@arm.com> Date: Mon, 24 Jun 2024 13:54:48 +0100 Subject: [PATCH] vect: Also cost gconds for scalar [PR118211] Currently we only cost gconds for the vector loop while we omit costing them when analyzing the scalar loop; this unfairly penalizes the vector loop in the case of loops with early exits. This (together with the previous patches) enables us to vectorize std::find with 64-bit element sizes. gcc/ChangeLog: PR tree-optimization/118211 PR tree-optimization/116126 * tree-vect-loop.cc (vect_compute_single_scalar_iteration_cost): Don't skip over gconds. --- gcc/tree-vect-loop.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc index bb1138bfcfba..edd7d4d87630 100644 --- a/gcc/tree-vect-loop.cc +++ b/gcc/tree-vect-loop.cc @@ -1688,7 +1688,9 @@ vect_compute_single_scalar_iteration_cost (loop_vec_info loop_vinfo) gimple *stmt = gsi_stmt (si); stmt_vec_info stmt_info = loop_vinfo->lookup_stmt (stmt); - if (!is_gimple_assign (stmt) && !is_gimple_call (stmt)) + if (!is_gimple_assign (stmt) + && !is_gimple_call (stmt) + && !is_a<gcond *> (stmt)) continue; /* Skip stmts that are not vectorized inside the loop. */ -- GitLab