On Thu, Jul 16, 2015 at 04:20:33PM +0100, Kyrill Tkachov wrote:
> Hi all,
> 
> In this second patch I want to get to the point where I can get an enum that
> I can use to index all_architectures to get the current architecture being
> used, similar to what we
> do in patch 1/N.
> 
> The closest thing to what I want in aarch64-arches.def is the 3rd field which
> specifies the architecture revision. Unfortunately, it is used sometimes as
> an integer and sometimes as a string when defining the __ARM_ARCH macro in
> TARGET_CPU_CPP_BUILTINS.
> 
> I've decided to create a new field that is to be used as part of an enum name
> to uniquely identify each entry in aarch64-arches.def. The revision number
> (currently only '8') is left there since we need it for the ACLE predefs, but
> we might consider moving that out in the future...
> 
> In any case, with this patch we can now get an enum that can be used to
> access the architecture information from all_architectures and can be easily
> saved and restored for SWITCHABLE_TARGET functionality.
> 
> Bootstrapped with and without LTO and tested on aarch64 as part of the series.
> 
> Ok for trunk?

Ok.

Thanks,
James

> P.S. I think we should consider creating a separate struct definition for
> cores and architectures as the information we want to store about each starts
> to diverge and it's sometimes confusing as to what a 'struct processor*'
> pointer is referencing. But such a refactoring would interfere too much with
> what I'm trying to do in this patch series and is not strictly required for
> it. Although, once the dust settles on this series, I believe it will be
> easier to split them up.

I look forward to seeing the patch ;-)

James

> 
> 2015-07-16  Kyrylo Tkachov  <kyrylo.tkac...@arm.com>
> 
>      * config/aarch64/aarch64.h (TARGET_CPU_CPP_BUILTINS): Define
>      __ARM_ARCH_8A directly rather than with cpp_define_formatted.
>      * config/aarch64/aarch64.c (struct processor): Add arch field.
>      (all_architectures): Handle above, move above all_cores.
>      (all_cores): Handle above.
>      (aarch64_parse_arch): Handle above changes.
>      * config/aarch64/aarch64-arches.def (armv8-a): Extend according to
>      above.  Update comments.
>      (armv8.1-a): Likewise.
>      * config/aarch64/aarch64-cores.def: Update according to above.
>      * config/aarch64/aarch64-opts.h (aarch64_arch): New enum.
>      * config/aarch64/driver-aarch64.c (struct aarch64_arch): Rename to
>      aarch64_arch_driver_info.

Reply via email to