aboutsummaryrefslogtreecommitdiff
path: root/gcc/common
diff options
context:
space:
mode:
authorSrinath Parvathaneni <srinath.parvathaneni@arm.com>2023-01-13 15:36:49 +0000
committerSrinath Parvathaneni <srinath.parvathaneni@arm.com>2023-01-13 15:38:27 +0000
commit798a0d05b27279f8b1656c2e9549081e4af0afe4 (patch)
tree8462b57927ad31f61815b4eed0e508f0a0126064 /gcc/common
parenta3e8727b70f546dc82941391f3951188a0339e08 (diff)
downloadgcc-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.cc21
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);