From 9afb6360fcbb5c94f37f6c1328bfa76ca8e20021 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Mon, 9 Jan 2023 12:55:47 +0100 Subject: [PATCH] [Attributes] Avoid duplicate hasAttribute() query (NFC) removeAttribute() already performs a hasAttribute() check, so no need to also do it in the caller. Instead check whether the attribute set was changed. This makes the implementations in line with removeAttributesAtIndex(). --- llvm/lib/IR/Attributes.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/llvm/lib/IR/Attributes.cpp b/llvm/lib/IR/Attributes.cpp index 8bcb0808ef7c8..8c989c4645512 100644 --- a/llvm/lib/IR/Attributes.cpp +++ b/llvm/lib/IR/Attributes.cpp @@ -1380,18 +1380,20 @@ AttributeList AttributeList::removeAttributeAtIndex(LLVMContext &C, unsigned Index, Attribute::AttrKind Kind) const { AttributeSet Attrs = getAttributes(Index); - if (!Attrs.hasAttribute(Kind)) + AttributeSet NewAttrs = Attrs.removeAttribute(C, Kind); + if (Attrs == NewAttrs) return *this; - return setAttributesAtIndex(C, Index, Attrs.removeAttribute(C, Kind)); + return setAttributesAtIndex(C, Index, NewAttrs); } AttributeList AttributeList::removeAttributeAtIndex(LLVMContext &C, unsigned Index, StringRef Kind) const { AttributeSet Attrs = getAttributes(Index); - if (!Attrs.hasAttribute(Kind)) + AttributeSet NewAttrs = Attrs.removeAttribute(C, Kind); + if (Attrs == NewAttrs) return *this; - return setAttributesAtIndex(C, Index, Attrs.removeAttribute(C, Kind)); + return setAttributesAtIndex(C, Index, NewAttrs); } AttributeList AttributeList::removeAttributesAtIndex(