> It started with g:3e2ae3ee285a57455d5a23bd352a68c289130186 where
> new entry was added to processor_alias_table after generic node:
> 
> +  {"amdfam19h", PROCESSOR_GENERIC, CPU_GENERIC, 0,
> +    M_CPU_TYPE (AMDFAM19H), P_NONE},
> 
> and then the following is violated:
> 
> /* NB: processor_alias_table stops at the "generic" entry.  */
> 
> Patch can bootstrap on x86_64-linux-gnu and survives regression tests.
> 
> Ready to be installed?
OK, thanks!
Honza
> Thanks,
> Martin
> 
> gcc/ChangeLog:
> 
>       PR target/99753
>       * common/config/i386/i386-common.c (ARRAY_SIZE): Fix off-by-one
>       error.
>       * config/i386/i386-options.c (ix86_option_override_internal):
>       Add run-time assert.
> 
> gcc/testsuite/ChangeLog:
> 
>       PR target/99753
>       * gcc.target/i386/pr99753.c: New test.
> ---
>  gcc/common/config/i386/i386-common.c    | 2 +-
>  gcc/config/i386/i386-options.c          | 3 +++
>  gcc/testsuite/gcc.target/i386/pr99753.c | 5 +++++
>  3 files changed, 9 insertions(+), 1 deletion(-)
>  create mode 100644 gcc/testsuite/gcc.target/i386/pr99753.c
> 
> diff --git a/gcc/common/config/i386/i386-common.c 
> b/gcc/common/config/i386/i386-common.c
> index eea8af12f48..b89183b830e 100644
> --- a/gcc/common/config/i386/i386-common.c
> +++ b/gcc/common/config/i386/i386-common.c
> @@ -2051,7 +2051,7 @@ const pta processor_alias_table[] =
>  };
>  /* NB: processor_alias_table stops at the "generic" entry.  */
> -unsigned int const pta_size = ARRAY_SIZE (processor_alias_table) - 6;
> +unsigned int const pta_size = ARRAY_SIZE (processor_alias_table) - 7;
>  unsigned int const num_arch_names = ARRAY_SIZE (processor_alias_table);
>  /* Provide valid option values for -march and -mtune options.  */
> diff --git a/gcc/config/i386/i386-options.c b/gcc/config/i386/i386-options.c
> index b653527d266..88d5e717f26 100644
> --- a/gcc/config/i386/i386-options.c
> +++ b/gcc/config/i386/i386-options.c
> @@ -2042,6 +2042,9 @@ ix86_option_override_internal (bool main_args_p,
>      sorry ("%i-bit mode not compiled in",
>          (opts->x_ix86_isa_flags & OPTION_MASK_ISA_64BIT) ? 64 : 32);
> +  /* Last processor_alias_table must point to "generic" entry.  */
> +  gcc_checking_assert (strcmp (processor_alias_table[pta_size - 1].name,
> +                            "generic") == 0);
>    for (i = 0; i < pta_size; i++)
>      if (! strcmp (opts->x_ix86_arch_string, processor_alias_table[i].name))
>        {
> diff --git a/gcc/testsuite/gcc.target/i386/pr99753.c 
> b/gcc/testsuite/gcc.target/i386/pr99753.c
> new file mode 100644
> index 00000000000..3def1fd7481
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/i386/pr99753.c
> @@ -0,0 +1,5 @@
> +/* PR target/99753 */
> +
> +/* { dg-do compile } */
> +/* { dg-options "-march=amd -m32" } */
> +/* { dg-error "bad value .'amd'. for '-march=' switch"  "" { target *-*-* } 
> 0 } */
> -- 
> 2.30.2
> 

Reply via email to