On Mon, Sep 16, 2013 at 12:07:37PM +0200, Richard Biener wrote: > On Fri, Sep 13, 2013 at 6:56 PM, Xinliang David Li <davi...@google.com> wrote: > > Updated patch implementing the logic that more specific option wins. > > > > Ok for trunk? > > @@ -2305,8 +2305,8 @@ omp_max_vf (void) > { > if (!optimize > || optimize_debug > - || (!flag_tree_vectorize > - && global_options_set.x_flag_tree_vectorize)) > + || (!flag_tree_loop_vectorize > + && global_options_set.x_flag_tree_loop_vectorize)) > return 1; > > Not sure what is the intent here, but it looks like > -fno-tree-vectorize will no longer disable this. So it would > need to check (global_options_set.x_flag_tree_vectorize || > global_options_set.x_flag_tree_loop_vectorize)? Jakub?
The point of omp_max_vf is to allow vectorization of simd routines in the source even without -O3/-Ofast/-ftree-vectorize, as long as user hasn't requested no vectorization (-fno-tree-vectorize, or -O0, -Og). So yes, you'd probably need to change this spot to check for either global_options_set.x_flag_tree_vectorize || global_options_set.x_flag_tree_loop_vectorize, because either of them meant explicit request to either vectorize or not vectorize loops. If user has requested vectorization or non-vectorization of loops, then simd loops just should follow those requests, it is only the default if there was nothing explicit, which will for now be different between normal and simd loops, normal loops won't be vectorized, simd loops will be, because they were specially marked in the source and so it is probably worthwhile to vectorize them. Jakub