[Patch (preapproved)] Guard Copy Header pass on flag_tree_loop_vectorize

Richard Biener richard.guenther@gmail.com
Thu Jul 27 12:26:00 GMT 2017


On Thu, Jul 27, 2017 at 2:08 PM, Jakub Jelinek <jakub@redhat.com> wrote:
> On Thu, Jul 27, 2017 at 01:54:21PM +0200, Richard Biener wrote:
>> --- gcc/common.opt      (revision 250619)
>> +++ gcc/common.opt      (working copy)
>>  ftree-vectorize
>> -Common Report Var(flag_tree_vectorize) Optimization
>> +Common Report Optimization
>>  Enable vectorization on trees.
>>
>>  ftree-vectorizer-verbose=
>>
>> which shows a few other uses of flag_tree_vectorize:
>>
>> int
>> omp_max_vf (void)
>> {
>>   if (!optimize
>>       || optimize_debug
>>       || !flag_tree_loop_optimize
>>       || (!flag_tree_loop_vectorize
>>           && (global_options_set.x_flag_tree_loop_vectorize
>>               || global_options_set.x_flag_tree_vectorize)))
>>     return 1;
>>
>> not sure what that was supposed to test.  Jakub?  Similar
>> use in expand_omp_simd.
>
> The intent is/was to check if the vectorizer pass will be invoked,
> otherwise it makes no sense to generate the arrays.
> So, for -O0/-Og or -fno-tree-loop-optimize, we know that the pass
> isn't even in the pipeline.
> And otherwise the intent was that we try to optimize, unless
> user asked explicitly -fno-tree-loop-vectorize or -fno-tree-vectorize
> not to optimize.  Because the vect pass is enabled if:
> flag_tree_loop_vectorize || fun->has_force_vectorize_loops
> but returning non-zero from omp_max_vf and the other omp spot means
> there will be cfun->has_force_vectorize_loops.

I see.  So it would be good to try if adding EnabledBy(ftree-vectorize) to
ftree-loop-vectorize/ftree-slp-vectorize would add those to global_options_set
iff -ftree-vectorize is enabled (the opts.c hunk setting the flags is then
redundant as well I guess).

Richard.

>         Jakub



More information about the Gcc-patches mailing list