Hi! On Fri, Aug 14, 2020 at 01:42:24PM +0800, Kewen.Lin wrote: > > I think personally I'd prefer an option (3): call > > target_option_override_hook directly in decode_options, > > if help_option_arguments is nonempty. Like you say, > > decode_options appears to be the only caller of print_help. > > Good idea! The related patch is attached, different from opts_alt{1,2} > it could still call target_option_override_hook even if we won't call > print_specific_help eventually for some special cases like lang_mask is > CL_DRIVER or include_flags is empty. But I think it's fine.
> --- a/gcc/opts-global.c > +++ b/gcc/opts-global.c > @@ -327,8 +327,14 @@ decode_options (struct gcc_options *opts, struct > gcc_options *opts_set, > unsigned i; > const char *arg; > > - FOR_EACH_VEC_ELT (help_option_arguments, i, arg) > - print_help (opts, lang_mask, arg); > + if (!help_option_arguments.is_empty ()) > + { > + /* Consider post-overrided values for --help=*. */ I'd say /* Make sure --help=* see the overridden values. */ > + target_option_override_hook (); > + > + FOR_EACH_VEC_ELT (help_option_arguments, i, arg) > + print_help (opts, lang_mask, arg); > + } > } The patch looks just fine to me. But, not my call :-) Segher