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.