[llvm] 6e30cb7 - [Attributes] Add AttributeList ctor from AttributeSet (NFC)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Mon Dec 20 02:37:11 PST 2021
Author: Nikita Popov
Date: 2021-12-20T11:37:01+01:00
New Revision: 6e30cb7673df293fd294acef7eadca8050b5a71e
URL: https://github.com/llvm/llvm-project/commit/6e30cb7673df293fd294acef7eadca8050b5a71e
DIFF: https://github.com/llvm/llvm-project/commit/6e30cb7673df293fd294acef7eadca8050b5a71e.diff
LOG: [Attributes] Add AttributeList ctor from AttributeSet (NFC)
It was already possible to create an AttributeList from an Index
and an AttributeSet. However, this would actually end up using
the implicit constructor on AttrBuilder, thus doing an unnecessary
conversion from AttributeSet to AttrBuilder to AttributeSet.
Instead we can accept the AttributeSet directly, as that is what
we need anyway.
Added:
Modified:
llvm/include/llvm/IR/Attributes.h
llvm/lib/IR/Attributes.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/IR/Attributes.h b/llvm/include/llvm/IR/Attributes.h
index 002277eb4d720..8eef8b49e6bfd 100644
--- a/llvm/include/llvm/IR/Attributes.h
+++ b/llvm/include/llvm/IR/Attributes.h
@@ -455,6 +455,8 @@ class AttributeList {
ArrayRef<uint64_t> Values);
static AttributeList get(LLVMContext &C, unsigned Index,
ArrayRef<StringRef> Kind);
+ static AttributeList get(LLVMContext &C, unsigned Index,
+ AttributeSet Attrs);
static AttributeList get(LLVMContext &C, unsigned Index,
const AttrBuilder &B);
diff --git a/llvm/lib/IR/Attributes.cpp b/llvm/lib/IR/Attributes.cpp
index ede520bea053e..c899afae6cce9 100644
--- a/llvm/lib/IR/Attributes.cpp
+++ b/llvm/lib/IR/Attributes.cpp
@@ -1136,15 +1136,20 @@ AttributeList AttributeList::get(LLVMContext &C, AttributeSet FnAttrs,
}
AttributeList AttributeList::get(LLVMContext &C, unsigned Index,
- const AttrBuilder &B) {
- if (!B.hasAttributes())
+ AttributeSet Attrs) {
+ if (!Attrs.hasAttributes())
return {};
Index = attrIdxToArrayIdx(Index);
SmallVector<AttributeSet, 8> AttrSets(Index + 1);
- AttrSets[Index] = AttributeSet::get(C, B);
+ AttrSets[Index] = Attrs;
return getImpl(C, AttrSets);
}
+AttributeList AttributeList::get(LLVMContext &C, unsigned Index,
+ const AttrBuilder &B) {
+ return get(C, Index, AttributeSet::get(C, B));
+}
+
AttributeList AttributeList::get(LLVMContext &C, unsigned Index,
ArrayRef<Attribute::AttrKind> Kinds) {
SmallVector<std::pair<unsigned, Attribute>, 8> Attrs;
More information about the llvm-commits
mailing list