[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