[llvm] cd88a01 - [Attributes] Use single method to fetch type from AttributeSet (NFC)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 14 12:11:07 PDT 2021


Author: Nikita Popov
Date: 2021-07-14T21:10:56+02:00
New Revision: cd88a01cb8e90b5eae9f8bde82ff362b222a61c4

URL: https://github.com/llvm/llvm-project/commit/cd88a01cb8e90b5eae9f8bde82ff362b222a61c4
DIFF: https://github.com/llvm/llvm-project/commit/cd88a01cb8e90b5eae9f8bde82ff362b222a61c4.diff

LOG: [Attributes] Use single method to fetch type from AttributeSet (NFC)

While it is nice to have separate methods in the public AttributeSet
API, we can fetch the type from the internal AttributeSetNode
using a generic API for all type attribute kinds.

Added: 
    

Modified: 
    llvm/lib/IR/AttributeImpl.h
    llvm/lib/IR/Attributes.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/IR/AttributeImpl.h b/llvm/lib/IR/AttributeImpl.h
index 6669238602bf..c5bbe6571096 100644
--- a/llvm/lib/IR/AttributeImpl.h
+++ b/llvm/lib/IR/AttributeImpl.h
@@ -255,11 +255,7 @@ class AttributeSetNode final
   std::pair<unsigned, Optional<unsigned>> getAllocSizeArgs() const;
   std::pair<unsigned, unsigned> getVScaleRangeArgs() const;
   std::string getAsString(bool InAttrGrp) const;
-  Type *getByValType() const;
-  Type *getStructRetType() const;
-  Type *getByRefType() const;
-  Type *getPreallocatedType() const;
-  Type *getInAllocaType() const;
+  Type *getAttributeType(Attribute::AttrKind Kind) const;
 
   using iterator = const Attribute *;
 

diff  --git a/llvm/lib/IR/Attributes.cpp b/llvm/lib/IR/Attributes.cpp
index 31cef097fb4b..368fc87dc801 100644
--- a/llvm/lib/IR/Attributes.cpp
+++ b/llvm/lib/IR/Attributes.cpp
@@ -689,23 +689,23 @@ uint64_t AttributeSet::getDereferenceableOrNullBytes() const {
 }
 
 Type *AttributeSet::getByRefType() const {
-  return SetNode ? SetNode->getByRefType() : nullptr;
+  return SetNode ? SetNode->getAttributeType(Attribute::ByRef) : nullptr;
 }
 
 Type *AttributeSet::getByValType() const {
-  return SetNode ? SetNode->getByValType() : nullptr;
+  return SetNode ? SetNode->getAttributeType(Attribute::ByVal) : nullptr;
 }
 
 Type *AttributeSet::getStructRetType() const {
-  return SetNode ? SetNode->getStructRetType() : nullptr;
+  return SetNode ? SetNode->getAttributeType(Attribute::StructRet) : nullptr;
 }
 
 Type *AttributeSet::getPreallocatedType() const {
-  return SetNode ? SetNode->getPreallocatedType() : nullptr;
+  return SetNode ? SetNode->getAttributeType(Attribute::Preallocated) : nullptr;
 }
 
 Type *AttributeSet::getInAllocaType() const {
-  return SetNode ? SetNode->getInAllocaType() : nullptr;
+  return SetNode ? SetNode->getAttributeType(Attribute::InAlloca) : nullptr;
 }
 
 std::pair<unsigned, Optional<unsigned>> AttributeSet::getAllocSizeArgs() const {
@@ -897,32 +897,8 @@ MaybeAlign AttributeSetNode::getStackAlignment() const {
   return None;
 }
 
-Type *AttributeSetNode::getByValType() const {
-  if (auto A = findEnumAttribute(Attribute::ByVal))
-    return A->getValueAsType();
-  return nullptr;
-}
-
-Type *AttributeSetNode::getStructRetType() const {
-  if (auto A = findEnumAttribute(Attribute::StructRet))
-    return A->getValueAsType();
-  return nullptr;
-}
-
-Type *AttributeSetNode::getByRefType() const {
-  if (auto A = findEnumAttribute(Attribute::ByRef))
-    return A->getValueAsType();
-  return nullptr;
-}
-
-Type *AttributeSetNode::getPreallocatedType() const {
-  if (auto A = findEnumAttribute(Attribute::Preallocated))
-    return A->getValueAsType();
-  return nullptr;
-}
-
-Type *AttributeSetNode::getInAllocaType() const {
-  if (auto A = findEnumAttribute(Attribute::InAlloca))
+Type *AttributeSetNode::getAttributeType(Attribute::AttrKind Kind) const {
+  if (auto A = findEnumAttribute(Kind))
     return A->getValueAsType();
   return nullptr;
 }


        


More information about the llvm-commits mailing list