From f261d4808cc28a2dfd47fe06c97364c0869bb78f Mon Sep 17 00:00:00 2001 From: Andre Vieira Date: Thu, 17 Oct 2019 12:35:33 +0000 Subject: [PATCH] [vect] Be consistent in versioning threshold use gcc/ChangeLog: 2019-10-17 Andre Vieira * tree-vect-loop.c (vect_analyze_loop_2): Use same condition to decide when to use versioning threshold. From-SVN: r277105 --- gcc/ChangeLog | 5 +++++ gcc/tree-vect-loop.c | 9 +++++++++ 2 files changed, 14 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9b17a6d5bbd..9c0e754360e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2019-10-17 Andre Vieira + + * tree-vect-loop.c (vect_analyze_loop_2): Use same condition to decide + when to use versioning threshold. + 2019-10-17 Andre Vieira * tree-vect-loop.c (determine_peel_for_niter): New function contained diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index df9f159e774..fa5c2162f2f 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -2154,6 +2154,7 @@ start_over: if (LOOP_REQUIRES_VERSIONING (loop_vinfo)) { poly_uint64 niters_th = 0; + unsigned int th = LOOP_VINFO_COST_MODEL_THRESHOLD (loop_vinfo); if (!vect_use_loop_mask_for_alignment_p (loop_vinfo)) { @@ -2174,6 +2175,14 @@ start_over: /* One additional iteration because of peeling for gap. */ if (LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo)) niters_th += 1; + + /* Use the same condition as vect_transform_loop to decide when to use + the cost to determine a versioning threshold. */ + if (th >= vect_vf_for_cost (loop_vinfo) + && !LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo) + && ordered_p (th, niters_th)) + niters_th = ordered_max (poly_uint64 (th), niters_th); + LOOP_VINFO_VERSIONING_THRESHOLD (loop_vinfo) = niters_th; } -- 2.30.2