diff options
author | Srinath Parvathaneni <srinath.parvathaneni@arm.com> | 2023-01-13 15:36:49 +0000 |
---|---|---|
committer | Srinath Parvathaneni <srinath.parvathaneni@arm.com> | 2023-01-13 15:38:27 +0000 |
commit | 798a0d05b27279f8b1656c2e9549081e4af0afe4 (patch) | |
tree | 8462b57927ad31f61815b4eed0e508f0a0126064 /gcc/common | |
parent | a3e8727b70f546dc82941391f3951188a0339e08 (diff) | |
download | gcc-798a0d05b27279f8b1656c2e9549081e4af0afe4.zip gcc-798a0d05b27279f8b1656c2e9549081e4af0afe4.tar.gz gcc-798a0d05b27279f8b1656c2e9549081e4af0afe4.tar.bz2 |
arm: Add cde feature support for Cortex-M55 CPU.
This patch adds cde feature (optional) support for Cortex-M55 CPU, please refer
[1] for more details. To use this feature we need to specify +cdecpN
(e.g. -mcpu=cortex-m55+cdecp<N>), where N is the coprocessor number 0 to 7.
gcc/ChangeLog:
2023-01-13 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
* common/config/arm/arm-common.cc (arm_canon_arch_option_1): Ignore cde
options for -mlibarch.
* config/arm/arm-cpus.in (begin cpu cortex-m55): Add cde options.
* doc/invoke.texi (CDE): Document options for Cortex-M55 CPU.
gcc/testsuite/ChangeLog:
2023-01-13 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
* gcc.target/arm/multilib.exp: Add multilib tests for Cortex-M55 CPU.
Diffstat (limited to 'gcc/common')
-rw-r--r-- | gcc/common/config/arm/arm-common.cc | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/gcc/common/config/arm/arm-common.cc b/gcc/common/config/arm/arm-common.cc index c38812f..9ed6830 100644 --- a/gcc/common/config/arm/arm-common.cc +++ b/gcc/common/config/arm/arm-common.cc @@ -685,8 +685,10 @@ arm_canon_arch_option_1 (int argc, const char **argv, bool arch_for_multilib) auto_sbitmap target_isa (isa_num_bits); auto_sbitmap base_isa (isa_num_bits); auto_sbitmap fpu_isa (isa_num_bits); + auto_sbitmap ignore_multilib_isa (isa_num_bits); bitmap_clear (fpu_isa); + bitmap_clear (ignore_multilib_isa); const arch_option *selected_arch = NULL; @@ -719,15 +721,6 @@ arm_canon_arch_option_1 (int argc, const char **argv, bool arch_for_multilib) arm_initialize_isa (target_isa, selected_arch->common.isa_bits); arm_parse_option_features (target_isa, &selected_arch->common, strchr (arch, '+')); - if (arch_for_multilib) - { - const enum isa_feature removable_bits[] = {ISA_IGNORE_FOR_MULTILIB, - isa_nobit}; - sbitmap isa_bits = sbitmap_alloc (isa_num_bits); - arm_initialize_isa (isa_bits, removable_bits); - bitmap_and_compl (target_isa, target_isa, isa_bits); - } - if (fpu && strcmp (fpu, "auto") != 0) { /* We assume that architectures do not have any FPU bits @@ -806,6 +799,16 @@ arm_canon_arch_option_1 (int argc, const char **argv, bool arch_for_multilib) bitmap_clear_bit (target_isa, isa_bit_vfpv2); } + /* Here we remove feature isa bits from -mlibarch string which are not + necessary for multilib string comparsion. */ + if ((arch || cpu) && arch_for_multilib) + { + const enum isa_feature removable_bits[] = {ISA_IGNORE_FOR_MULTILIB, + isa_nobit}; + arm_initialize_isa (ignore_multilib_isa, removable_bits); + bitmap_and_compl (target_isa, target_isa, ignore_multilib_isa); + } + /* If we don't have a selected architecture by now, something's badly wrong. */ gcc_assert (selected_arch); |