aboutsummaryrefslogtreecommitdiff
path: root/gcc/common
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2022-09-29 11:32:56 +0100
committerRichard Sandiford <richard.sandiford@arm.com>2022-09-29 11:32:56 +0100
commitbb7f43b62a58a0f0326fd3060f0bd43e6f3ef971 (patch)
tree4c3c99d5b70adc914379a0ab6b52e348d34c948a /gcc/common
parentfed55a60e5b230bc159617f26e33611073c672fd (diff)
downloadgcc-bb7f43b62a58a0f0326fd3060f0bd43e6f3ef971.zip
gcc-bb7f43b62a58a0f0326fd3060f0bd43e6f3ef971.tar.gz
gcc-bb7f43b62a58a0f0326fd3060f0bd43e6f3ef971.tar.bz2
aarch64: Tweak contents of flags_on/off fields
After previous changes, it's more convenient if the flags_on and flags_off fields of all_extensions include the feature flag itself. gcc/ * common/config/aarch64/aarch64-common.cc (all_extensions): Include the feature flag in flags_on and flags_off. (aarch64_parse_extension): Update accordingly. (aarch64_get_extension_string_for_isa_flags): Likewise.
Diffstat (limited to 'gcc/common')
-rw-r--r--gcc/common/config/aarch64/aarch64-common.cc14
1 files changed, 6 insertions, 8 deletions
diff --git a/gcc/common/config/aarch64/aarch64-common.cc b/gcc/common/config/aarch64/aarch64-common.cc
index bebcfd4..ffa83bb 100644
--- a/gcc/common/config/aarch64/aarch64-common.cc
+++ b/gcc/common/config/aarch64/aarch64-common.cc
@@ -137,10 +137,8 @@ struct aarch64_option_extension
static constexpr aarch64_option_extension all_extensions[] =
{
#define AARCH64_OPT_EXTENSION(NAME, IDENT, C, D, E, F) \
- {NAME, AARCH64_FL_##IDENT, \
- feature_deps::IDENT ().explicit_on & ~AARCH64_FL_##IDENT, \
- feature_deps::get_flags_off (feature_deps::root_off_##IDENT) \
- & ~AARCH64_FL_##IDENT},
+ {NAME, AARCH64_FL_##IDENT, feature_deps::IDENT ().explicit_on, \
+ feature_deps::get_flags_off (feature_deps::root_off_##IDENT)},
#include "config/aarch64/aarch64-option-extensions.def"
{NULL, 0, 0, 0}
};
@@ -228,9 +226,9 @@ aarch64_parse_extension (const char *str, aarch64_feature_flags *isa_flags,
{
/* Add or remove the extension. */
if (adding_ext)
- *isa_flags |= (opt->flags_on | opt->flag_canonical);
+ *isa_flags |= opt->flags_on;
else
- *isa_flags &= ~(opt->flags_off | opt->flag_canonical);
+ *isa_flags &= ~opt->flags_off;
break;
}
}
@@ -304,7 +302,7 @@ aarch64_get_extension_string_for_isa_flags
if ((flags & isa_flags & (explicit_flags | ~current_flags)) == flags)
{
- current_flags |= opt.flag_canonical | opt.flags_on;
+ current_flags |= opt.flags_on;
added |= opt.flag_canonical;
}
}
@@ -319,7 +317,7 @@ aarch64_get_extension_string_for_isa_flags
for (auto &opt : all_extensions)
if (opt.flag_canonical & current_flags & ~isa_flags)
{
- current_flags &= ~(opt.flag_canonical | opt.flags_off);
+ current_flags &= ~opt.flags_off;
outstr += "+no";
outstr += opt.name;
}