> > This patch makes the -falign-foo=0 work as described in the > > documentation. Thanks for all the suggestions, Richard and Segher! > > Hello. > > I'm the author of the original code. > > > > > v3: make change more readable and self-consistent > > v2: at a high level handles -falign-foo=0 like -falign-foo > > > > Regards! > > Hujp > > > > --- > > gcc/opts.c | 24 +++++++++++++++++++----- > > 1 file changed, 19 insertions(+), 5 deletions(-) > > > > diff --git a/gcc/opts.c b/gcc/opts.c > > index 499eb900643..dec5ba6d2be 100644 > > --- a/gcc/opts.c > > +++ b/gcc/opts.c > > @@ -2007,10 +2007,20 @@ parse_and_check_align_values (const char > *flag, > > location LOC. */ > > > > static void > > -check_alignment_argument (location_t loc, const char *flag, const char > *name) > > +check_alignment_argument (location_t loc, > > + const char *flag, > > + const char *name, > > + int *opt_flag, > > + const char **opt_str) > > { > > auto_vec<unsigned> align_result; > > parse_and_check_align_values (flag, name, align_result, true, loc); > > + > > + if (align_result.length() >= 1 && align_result[0] == 0) > > + { > > + *opt_flag = 1; > > + *opt_str = NULL; > > + } > > Hm, shouldn't the code be placed in parse_and_check_align_values? Note that > there's > one another call gcc/toplev.c (parse_N_M). > > I bet you likely want to modify result_values in case -falign-foo=0. > About the -falign-foo=0:m:n2:m3, you can report an error in > parse_and_check_align_values? > Thanks Martin!
Reporting errors may break exist Makefiles and is not as good as handling -falign-foo=0 like -falign-foo. We have discussed earlier. And when parse_N_M is called, the values may have been overided by target code, I think it is inappropriate to report errors at that time. > Thanks for working on that? > Btw. what's your use-case that you use the extended syntax of -falign-foo? > Martin > In fact, I was understanding the cpu tuning structure of gcc, and then when I read the documentation of -falign-foo, I found this problem. Thanks, Hujp > > } > > > > /* Print help when OPT__help_ is set. */ > > @@ -2785,19 +2795,23 @@ common_handle_option (struct gcc_options > *opts, > > break; > > > > case OPT_falign_loops_: > > - check_alignment_argument (loc, arg, "loops"); > > + check_alignment_argument (loc, arg, "loops", > > + &opts->x_flag_align_loops, &opts->x_str_align_loops); > > break; > > > > case OPT_falign_jumps_: > > - check_alignment_argument (loc, arg, "jumps"); > > + check_alignment_argument (loc, arg, "jumps", > > + &opts->x_flag_align_jumps, &opts->x_str_align_jumps); > > break; > > > > case OPT_falign_labels_: > > - check_alignment_argument (loc, arg, "labels"); > > + check_alignment_argument (loc, arg, "labels", > > + &opts->x_flag_align_labels, &opts->x_str_align_labels); > > break; > > > > case OPT_falign_functions_: > > - check_alignment_argument (loc, arg, "functions"); > > + check_alignment_argument (loc, arg, "functions", > > + &opts->x_flag_align_functions, &opts->x_str_align_functions); > > break; > > > > case OPT_ftabstop_: > > > >