From 5cee32399049534903f3ddb0bf55657b909492f4 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Thu, 4 Jul 2019 13:55:15 +0000 Subject: re PR tree-optimization/90911 (456.hmmer regression with r272239) 2019-07-04 Richard Biener PR tree-optimization/90911 * tree-vectorizer.h (_loop_vec_info::scalar_loop_scaling): New field. (LOOP_VINFO_SCALAR_LOOP_SCALING): new. * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize scalar_loop_scaling. (vect_transform_loop): Scale scalar loop profile if needed. * tree-vect-loop-manip.c (vect_loop_versioning): When re-using the loop copy from if-conversion adjust edge probabilities and scale the vectorized loop body profile, queue the scalar profile for updating after peeling. From-SVN: r273082 --- gcc/tree-vect-loop.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'gcc/tree-vect-loop.c') diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index c46cd9d..b49ab15 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -833,6 +833,7 @@ _loop_vec_info::_loop_vec_info (struct loop *loop_in, vec_info_shared *shared) operands_swapped (false), no_data_dependencies (false), has_mask_store (false), + scalar_loop_scaling (profile_probability::uninitialized ()), scalar_loop (NULL), orig_loop_info (NULL) { @@ -8557,6 +8558,10 @@ vect_transform_loop (loop_vec_info loop_vinfo) epilogue = vect_do_peeling (loop_vinfo, niters, nitersm1, &niters_vector, &step_vector, &niters_vector_mult_vf, th, check_profitability, niters_no_overflow); + if (LOOP_VINFO_SCALAR_LOOP (loop_vinfo) + && LOOP_VINFO_SCALAR_LOOP_SCALING (loop_vinfo).initialized_p ()) + scale_loop_frequencies (LOOP_VINFO_SCALAR_LOOP (loop_vinfo), + LOOP_VINFO_SCALAR_LOOP_SCALING (loop_vinfo)); if (niters_vector == NULL_TREE) { -- cgit v1.1