https://gcc.gnu.org/g:086031c058598512d09bf898e4db3735b3e1f22c

commit r15-6811-g086031c058598512d09bf898e4db3735b3e1f22c
Author: Alex Coplan <alex.cop...@arm.com>
Date:   Mon Jun 24 13:54:48 2024 +0100

    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.

Diff:
---
 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.  */

Reply via email to