Hu Jiangping <hujiangp...@cn.fujitsu.com> writes: > Hi! > > This patch makes the -falign-foo=0 work as described in the > documentation. Thanks for all the suggestions. > > v4: do changes for coding conventions > v3: make change more readable and self-consistent > > Changelog: > 2020-07-27 Hu Jiangping <hujiangp...@cn.fujitsu.com> > > PR driver/96247 > * opts.c (check_alignment_argument): Set the -falign-Name > on/off flag on and set the -falign-Name string value null, > when the command-line specified argument is zero.
Thanks, pushed to master. Richard > > Tested on x86_64. > > Regards! > Hujp > > --- > gcc/opts.c | 28 ++++++++++++++++++++++------ > 1 file changed, 22 insertions(+), 6 deletions(-) > > diff --git a/gcc/opts.c b/gcc/opts.c > index 499eb900643..574b28416fb 100644 > --- a/gcc/opts.c > +++ b/gcc/opts.c > @@ -2004,13 +2004,21 @@ parse_and_check_align_values (const char *flag, > } > > /* Check that alignment value FLAG for -falign-NAME is valid at a given > - location LOC. */ > + location LOC. OPT_STR points to the stored -falign-NAME=argument and > + OPT_FLAG points to the associated -falign-NAME on/off flag. */ > > 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; > + } > } > > /* Print help when OPT__help_ is set. */ > @@ -2785,19 +2793,27 @@ 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_: