mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 10:42:39 +01:00
[IR] Optimize no-op removal from AttributeList (NFC)
When removing an AttrBuilder from an index of an AttributeList, directly return the original list if no attributes were actually removed.
This commit is contained in:
parent
632878de15
commit
66053da05c
@ -1484,17 +1484,12 @@ AttributeList AttributeList::removeAttribute(LLVMContext &C, unsigned Index,
|
||||
AttributeList
|
||||
AttributeList::removeAttributes(LLVMContext &C, unsigned Index,
|
||||
const AttrBuilder &AttrsToRemove) const {
|
||||
if (!pImpl)
|
||||
return {};
|
||||
|
||||
Index = attrIdxToArrayIdx(Index);
|
||||
SmallVector<AttributeSet, 4> AttrSets(this->begin(), this->end());
|
||||
if (Index >= AttrSets.size())
|
||||
AttrSets.resize(Index + 1);
|
||||
|
||||
AttrSets[Index] = AttrSets[Index].removeAttributes(C, AttrsToRemove);
|
||||
|
||||
return getImpl(C, AttrSets);
|
||||
AttributeSet Attrs = getAttributes(Index);
|
||||
AttributeSet NewAttrs = Attrs.removeAttributes(C, AttrsToRemove);
|
||||
// If nothing was removed, return the original list.
|
||||
if (Attrs == NewAttrs)
|
||||
return *this;
|
||||
return setAttributes(C, Index, NewAttrs);
|
||||
}
|
||||
|
||||
AttributeList AttributeList::removeAttributes(LLVMContext &C,
|
||||
|
Loading…
Reference in New Issue
Block a user