attribute_ignored_p already used a namespace-aware query
to find the attribute_spec for an existing attribute:

      const attribute_spec *as = lookup_attribute_spec (TREE_PURPOSE (attr));

This patch does the same for other callers in the file.

Tested on aarch64-linux-gnu & x86_64-linux-gnu.  OK to install?

Richard


gcc/
        * attribs.cc (comp_type_attributes): Pass the full TREE_PURPOSE
        to lookup_attribute_spec, rather than just the name.
        (remove_attributes_matching): Likewise.
---
 gcc/attribs.cc | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/gcc/attribs.cc b/gcc/attribs.cc
index c23ed3bac91..a2935b8101f 100644
--- a/gcc/attribs.cc
+++ b/gcc/attribs.cc
@@ -1472,7 +1472,7 @@ comp_type_attributes (const_tree type1, const_tree type2)
       const struct attribute_spec *as;
       const_tree attr;
 
-      as = lookup_attribute_spec (get_attribute_name (a));
+      as = lookup_attribute_spec (TREE_PURPOSE (a));
       if (!as || as->affects_type_identity == false)
        continue;
 
@@ -1486,7 +1486,7 @@ comp_type_attributes (const_tree type1, const_tree type2)
        {
          const struct attribute_spec *as;
 
-         as = lookup_attribute_spec (get_attribute_name (a));
+         as = lookup_attribute_spec (TREE_PURPOSE (a));
          if (!as || as->affects_type_identity == false)
            continue;
 
@@ -1528,8 +1528,7 @@ remove_attributes_matching (tree attrs, Predicate 
predicate)
   const_tree start = attrs;
   for (const_tree attr = attrs; attr; attr = TREE_CHAIN (attr))
     {
-      tree name = get_attribute_name (attr);
-      const attribute_spec *as = lookup_attribute_spec (name);
+      const attribute_spec *as = lookup_attribute_spec (TREE_PURPOSE (attr));
       const_tree end;
       if (!predicate (attr, as))
        end = attr;
-- 
2.25.1

Reply via email to