> > 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_:
> >
> 
> 



Reply via email to