diff options
Diffstat (limited to '0121-Backport-SME-aarch64-Tweak-constness-of-option-relat.patch')
| -rw-r--r-- | 0121-Backport-SME-aarch64-Tweak-constness-of-option-relat.patch | 195 | 
1 files changed, 195 insertions, 0 deletions
| diff --git a/0121-Backport-SME-aarch64-Tweak-constness-of-option-relat.patch b/0121-Backport-SME-aarch64-Tweak-constness-of-option-relat.patch new file mode 100644 index 0000000..4ababc2 --- /dev/null +++ b/0121-Backport-SME-aarch64-Tweak-constness-of-option-relat.patch @@ -0,0 +1,195 @@ +From 99c5eb58e898417632b6d9a7b2b3d288b50e9b65 Mon Sep 17 00:00:00 2001 +From: Richard Sandiford <richard.sandiford@arm.com> +Date: Thu, 29 Sep 2022 11:32:55 +0100 +Subject: [PATCH 022/157] [Backport][SME] aarch64: Tweak constness of + option-related data + +Reference: https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=60dee638c8a7ae59c033868de7e7638c88b38ed2 + +Some of the option structures have all-const member variables. +That doesn't seem necessary: we can just use const on the objects +that are supposed to be read-only. + +Also, with the new, more C++-heavy option handling, it seems +better to use constexpr for the static data, to make sure that +we're not adding unexpected overhead. + +gcc/ +	* common/config/aarch64/aarch64-common.cc (aarch64_option_extension) +	(processor_name_to_arch, arch_to_arch_name): Remove const from +	member variables. +	(all_extensions, all_cores, all_architectures): Make a constexpr. +	* config/aarch64/aarch64.cc (processor): Remove const from +	member variables. +	(all_architectures): Make a constexpr. +	* config/aarch64/driver-aarch64.cc (aarch64_core_data) +	(aarch64_arch_driver_info): Remove const from member variables. +	(aarch64_cpu_data, aarch64_arches): Make a constexpr. +	(get_arch_from_id): Return a pointer to const. +	(host_detect_local_cpu): Update accordingly. +--- + gcc/common/config/aarch64/aarch64-common.cc | 26 ++++++++++----------- + gcc/config/aarch64/aarch64.cc               | 14 +++++------ + gcc/config/aarch64/driver-aarch64.cc        | 15 ++++++------ + 3 files changed, 27 insertions(+), 28 deletions(-) + +diff --git a/gcc/common/config/aarch64/aarch64-common.cc b/gcc/common/config/aarch64/aarch64-common.cc +index 2bdf51b8b..ac3486d71 100644 +--- a/gcc/common/config/aarch64/aarch64-common.cc ++++ b/gcc/common/config/aarch64/aarch64-common.cc +@@ -203,14 +203,14 @@ aarch64_handle_option (struct gcc_options *opts, + /* An ISA extension in the co-processor and main instruction set space.  */ + struct aarch64_option_extension + { +-  const char *const name; +-  const uint64_t flag_canonical; +-  const uint64_t flags_on; +-  const uint64_t flags_off; ++  const char *name; ++  uint64_t flag_canonical; ++  uint64_t flags_on; ++  uint64_t flags_off; + }; +  + /* ISA extensions in AArch64.  */ +-static const struct aarch64_option_extension all_extensions[] = ++static constexpr aarch64_option_extension all_extensions[] = + { + #define AARCH64_OPT_EXTENSION(NAME, IDENT, C, D, E, F) \ +   {NAME, AARCH64_FL_##IDENT, \ +@@ -223,21 +223,21 @@ static const struct aarch64_option_extension all_extensions[] = +  + struct processor_name_to_arch + { +-  const char *const processor_name; +-  const enum aarch64_arch arch; +-  const uint64_t flags; ++  const char *processor_name; ++  aarch64_arch arch; ++  uint64_t flags; + }; +  + struct arch_to_arch_name + { +-  const enum aarch64_arch arch; +-  const char *const arch_name; +-  const uint64_t flags; ++  aarch64_arch arch; ++  const char *arch_name; ++  uint64_t flags; + }; +  + /* Map processor names to the architecture revision they implement and +    the default set of architectural feature flags they support.  */ +-static const struct processor_name_to_arch all_cores[] = ++static constexpr processor_name_to_arch all_cores[] = + { + #define AARCH64_CORE(NAME, CORE_IDENT, C, ARCH_IDENT, E, F, G, H, I) \ +   {NAME, AARCH64_ARCH_##ARCH_IDENT, feature_deps::cpu_##CORE_IDENT}, +@@ -247,7 +247,7 @@ static const struct processor_name_to_arch all_cores[] = + }; +  + /* Map architecture revisions to their string representation.  */ +-static const struct arch_to_arch_name all_architectures[] = ++static constexpr arch_to_arch_name all_architectures[] = + { + #define AARCH64_ARCH(NAME, B, ARCH_IDENT, D, E)	\ +   {AARCH64_ARCH_##ARCH_IDENT, NAME, feature_deps::ARCH_IDENT ().enable}, +diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc +index 1363873b1..71db7ace1 100644 +--- a/gcc/config/aarch64/aarch64.cc ++++ b/gcc/config/aarch64/aarch64.cc +@@ -2925,16 +2925,16 @@ aarch64_tuning_override_functions[] = + /* A processor implementing AArch64.  */ + struct processor + { +-  const char *const name; +-  enum aarch64_processor ident; +-  enum aarch64_processor sched_core; +-  enum aarch64_arch arch; +-  const uint64_t flags; +-  const struct tune_params *const tune; ++  const char *name; ++  aarch64_processor ident; ++  aarch64_processor sched_core; ++  aarch64_arch arch; ++  uint64_t flags; ++  const tune_params *tune; + }; +  + /* Architectures implementing AArch64.  */ +-static const struct processor all_architectures[] = ++static constexpr processor all_architectures[] = + { + #define AARCH64_ARCH(NAME, CORE, ARCH_IDENT, D, E) \ +   {NAME, CORE, CORE, AARCH64_ARCH_##ARCH_IDENT, \ +diff --git a/gcc/config/aarch64/driver-aarch64.cc b/gcc/config/aarch64/driver-aarch64.cc +index ddfc9451f..ee9cb65a5 100644 +--- a/gcc/config/aarch64/driver-aarch64.cc ++++ b/gcc/config/aarch64/driver-aarch64.cc +@@ -50,7 +50,7 @@ struct aarch64_core_data +   unsigned char implementer_id; /* Exactly 8 bits */ +   unsigned int part_no; /* 12 bits + 12 bits */ +   unsigned variant; +-  const uint64_t flags; ++  uint64_t flags; + }; +  + #define AARCH64_BIG_LITTLE(BIG, LITTLE) \ +@@ -64,7 +64,7 @@ struct aarch64_core_data + #define AARCH64_CORE(CORE_NAME, CORE_IDENT, SCHED, ARCH, FLAGS, COSTS, IMP, PART, VARIANT) \ +   { CORE_NAME, #ARCH, IMP, PART, VARIANT, feature_deps::cpu_##CORE_IDENT }, +  +-static struct aarch64_core_data aarch64_cpu_data[] = ++static constexpr aarch64_core_data aarch64_cpu_data[] = + { + #include "aarch64-cores.def" +   { NULL, NULL, INVALID_IMP, INVALID_CORE, ALL_VARIANTS, 0 } +@@ -75,14 +75,14 @@ struct aarch64_arch_driver_info + { +   const char* id; +   const char* name; +-  const uint64_t flags; ++  uint64_t flags; + }; +  + /* Skip the leading "V" in the architecture name.  */ + #define AARCH64_ARCH(NAME, CORE, ARCH_IDENT, ARCH_REV, FLAGS) \ +   { #ARCH_IDENT + 1, NAME, feature_deps::ARCH_IDENT ().enable }, +  +-static struct aarch64_arch_driver_info aarch64_arches[] = ++static constexpr aarch64_arch_driver_info aarch64_arches[] = + { + #include "aarch64-arches.def" +   {NULL, NULL, 0} +@@ -92,7 +92,7 @@ static struct aarch64_arch_driver_info aarch64_arches[] = + /* Return an aarch64_arch_driver_info for the architecture described +    by ID, or NULL if ID describes something we don't know about.  */ +  +-static struct aarch64_arch_driver_info* ++static const aarch64_arch_driver_info * + get_arch_from_id (const char* id) + { +   unsigned int i = 0; +@@ -396,8 +396,7 @@ host_detect_local_cpu (int argc, const char **argv) +  +       if (aarch64_cpu_data[i].name == NULL) + 	{ +-	  aarch64_arch_driver_info* arch_info +-	    = get_arch_from_id (DEFAULT_ARCH); ++	  auto arch_info = get_arch_from_id (DEFAULT_ARCH); +  + 	  gcc_assert (arch_info); +  +@@ -407,7 +406,7 @@ host_detect_local_cpu (int argc, const char **argv) +       else if (arch) + 	{ + 	  const char *arch_id = aarch64_cpu_data[i].arch; +-	  aarch64_arch_driver_info* arch_info = get_arch_from_id (arch_id); ++	  auto arch_info = get_arch_from_id (arch_id); +  + 	  /* We got some arch indentifier that's not in aarch64-arches.def?  */ + 	  if (!arch_info) +--  +2.33.0 + | 
