Tested on x86_64.

> -----Original Message-----
> From: Gcc-patches <gcc-patches-boun...@gcc.gnu.org> On Behalf Of Hu
> Jiangping
> Sent: Monday, July 27, 2020 3:46 PM
> To: gcc-patches@gcc.gnu.org; richard.sandif...@arm.com;
> seg...@kernel.crashing.org
> Subject: [PATCH v3] driver: fix a problem with implementation of -falign-foo=0
> [PR96247]
> 
> Hi!
> 
> This patch makes the -falign-foo=0 work as described in the
> documentation. Thanks for all the suggestions, Richard and Segher!
> 
> 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;
> +  }
>  }
> 
>  /* 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_:
> --
> 2.17.1
> 
> 



Reply via email to