diff options
author | Nikita Popov <npopov@redhat.com> | 2021-12-18 14:56:12 +0100 |
---|---|---|
committer | Nikita Popov <npopov@redhat.com> | 2021-12-20 11:37:01 +0100 |
commit | 6e30cb7673df293fd294acef7eadca8050b5a71e (patch) | |
tree | 5cdff21a2cd074f36b32898ceb6a3f05e5432c2d /llvm/lib/IR/Attributes.cpp | |
parent | 6c2bf01270a8a52b7986d5c49eaa7ad1c7083ec5 (diff) | |
download | llvm-6e30cb7673df293fd294acef7eadca8050b5a71e.zip llvm-6e30cb7673df293fd294acef7eadca8050b5a71e.tar.gz llvm-6e30cb7673df293fd294acef7eadca8050b5a71e.tar.bz2 |
[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.
Diffstat (limited to 'llvm/lib/IR/Attributes.cpp')
-rw-r--r-- | llvm/lib/IR/Attributes.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/llvm/lib/IR/Attributes.cpp b/llvm/lib/IR/Attributes.cpp index ede520b..c899afa 100644 --- a/llvm/lib/IR/Attributes.cpp +++ b/llvm/lib/IR/Attributes.cpp @@ -1136,16 +1136,21 @@ 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; for (const auto K : Kinds) |