On Tue, Nov 12, 2013 at 05:46:14PM +0400, Sergey Ostanevich wrote: > ivdep just substitutes all cross-iteration data analysis, > nothing related to cost model. ICC does not cancel its > cost model in case of #pragma ivdep > > as for the safelen - OMP standart treats it as a limitation > for the vector length. this means if no safelen is present > an arbitrary vector length can be used.
I was talking about GCC loop->safelen, which is INT_MAX for #pragma omp simd without safelen clause or #pragma simd without vectorlength clause. > so I believe loop->force_vect is the only trigger to disregard > the cost model Anyway, in that case I think the originally posted patch is wrong, if we want to treat force_vect as disregard all the cost model and force vectorization (well, the name of the field already kind of suggest that), then IMHO we should treat it the same as -fvect-cost-model=unlimited for those loops. Thus (untested): 2013-11-12 Jakub Jelinek <ja...@redhat.com> * tree-vect-loop.c (vect_estimate_min_profitable_iters): Use unlimited cost model also for force_vect loops. --- gcc/tree-vect-loop.c.jj 2013-11-12 12:09:40.000000000 +0100 +++ gcc/tree-vect-loop.c 2013-11-12 15:11:43.821404330 +0100 @@ -2702,7 +2702,7 @@ vect_estimate_min_profitable_iters (loop void *target_cost_data = LOOP_VINFO_TARGET_COST_DATA (loop_vinfo); /* Cost model disabled. */ - if (unlimited_cost_model ()) + if (unlimited_cost_model () || LOOP_VINFO_LOOP (loop_vinfo)->force_vect) { dump_printf_loc (MSG_NOTE, vect_location, "cost model disabled.\n"); *ret_min_profitable_niters = 0; Jakub