[3/3] attribs: Namespace-aware lookup_attribute_spec

Message ID mptwmuvax2x.fsf@arm.com
State Unresolved
Headers
Series [1/3] attribs: Cache the gnu namespace |

Checks

Context Check Description
snail/gcc-patch-check warning Git am fail log

Commit Message

Richard Sandiford Nov. 6, 2023, 12:24 p.m. UTC
  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(-)
  

Patch

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;