]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
aarch64: Tweak contents of flags_on/off fields
authorRichard Sandiford <richard.sandiford@arm.com>
Thu, 29 Sep 2022 10:32:56 +0000 (11:32 +0100)
committerRichard Sandiford <richard.sandiford@arm.com>
Thu, 29 Sep 2022 10:32:56 +0000 (11:32 +0100)
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.

gcc/common/config/aarch64/aarch64-common.cc

index bebcfd4c9d3b3d5de12e8c44136eef2c83416fa8..ffa83bb478fddbb1152ded424315a683569e932b 100644 (file)
@@ -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;
       }