The driver really needs to handle some canonicalization of the new-mcpu and -march options in order to make multilib selection tractable. This will require moving much of the logic to parse the new options into the common code file. However, the tuning data definitely does not want to be there as it is very specific to the compiler passes. To facilitate this we need to split up the generated configuration data into architectural and tuning related tables.
This patch starts that process, but does not yet move any code out of the compiler backend. Since I'm reworking all that code I took the opportunity to also separate out the CPU data tables from the architecture data tables. Although they are related, there is a lot of redundancy in the CPU options that is best handled by simply indirecting to the architecture entry.
- config/arm/arm-protos.h (arm_build_target): Remove arch_core. (cpu_arch_extension): New structure. (cpu_arch_option, arch_option, cpu_option): New structures.
- config/arm/parsecpu.awk (gen_headers): Build an enumeration of architecture types. (gen_data): Generate new format data tables.
- config/arm/arm.c (cpu_tune): New structure. (cpu_option, processors): Delete. (arm_print_hint_for_core_or_arch): Delete. Replace with ... (arm_print_hint_for_cpu_option): ... this and ... (arm_print_hint_for_arch_option): ... this. (arm_parse_arch_cpu_name): Delete. Replace with ... (arm_parse_cpu_option_name): ... this and ... (arm_parse_arch_option_name): ... this. (arm_unrecognized_feature): Change type of target parameter to cpu_arch_option. (arm_parse_arch_cpu_features): Delete. Replace with ... (arm_parse_option_features): ... this. (arm_configure_build_target): Rework to use new configuration data tables. (arm_print_tune_info): Rework for new configuration data tables.
- config/arm/arm-cpu-data.h: Regenerated.
- config/arm/arm-cpu.h: Regenerated.
ab6a47e [arm] Split CPU, architecture and tuning data tables.
gcc/ChangeLog | 26 +
gcc/config/arm/arm-cpu-data.h | 2701 +++++++++++++++++++++++------------------
gcc/config/arm/arm-cpu.h | 38 +
gcc/config/arm/arm-protos.h | 38 +-
gcc/config/arm/arm.c | 231 ++--
gcc/config/arm/parsecpu.awk | 119 +-
6 files changed, 1866 insertions(+), 1287 deletions(-)