diff options
author | Andreas Jonson <andjo403@hotmail.com> | 2024-05-02 03:48:23 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-02 10:48:23 +0900 |
commit | 3d65bd935a91439c483c56a966edc283a2b1130d (patch) | |
tree | 59ce1bce993cc94b235595ec267c80e4b334c6a9 /llvm/lib | |
parent | ad7ee900c70ba4e8dd442b35cddf390369698a59 (diff) | |
download | llvm-3d65bd935a91439c483c56a966edc283a2b1130d.zip llvm-3d65bd935a91439c483c56a966edc283a2b1130d.tar.gz llvm-3d65bd935a91439c483c56a966edc283a2b1130d.tar.bz2 |
[NFC] Reduce copies created of ConstantRange when getting ConstantRangeAttributes (#90335)
Think that it can be good to reduce the number of copies created when
working with ConstantRangeAttributes.
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/IR/AttributeImpl.h | 4 | ||||
-rw-r--r-- | llvm/lib/IR/Attributes.cpp | 8 | ||||
-rw-r--r-- | llvm/lib/IR/Verifier.cpp | 3 | ||||
-rw-r--r-- | llvm/lib/Transforms/Utils/FunctionComparator.cpp | 4 |
4 files changed, 10 insertions, 9 deletions
diff --git a/llvm/lib/IR/AttributeImpl.h b/llvm/lib/IR/AttributeImpl.h index 58dc145..dc5b80b 100644 --- a/llvm/lib/IR/AttributeImpl.h +++ b/llvm/lib/IR/AttributeImpl.h @@ -77,7 +77,7 @@ public: Type *getValueAsType() const; - ConstantRange getValueAsConstantRange() const; + const ConstantRange &getValueAsConstantRange() const; /// Used when sorting the attributes. bool operator<(const AttributeImpl &AI) const; @@ -219,7 +219,7 @@ public: ConstantRangeAttributeImpl(Attribute::AttrKind Kind, const ConstantRange &CR) : EnumAttributeImpl(ConstantRangeAttrEntry, Kind), CR(CR) {} - ConstantRange getConstantRangeValue() const { return CR; } + const ConstantRange &getConstantRangeValue() const { return CR; } }; class AttributeBitSet { diff --git a/llvm/lib/IR/Attributes.cpp b/llvm/lib/IR/Attributes.cpp index c6e511b..c8d6bdd 100644 --- a/llvm/lib/IR/Attributes.cpp +++ b/llvm/lib/IR/Attributes.cpp @@ -360,7 +360,7 @@ Type *Attribute::getValueAsType() const { return pImpl->getValueAsType(); } -ConstantRange Attribute::getValueAsConstantRange() const { +const ConstantRange &Attribute::getValueAsConstantRange() const { assert(isConstantRangeAttribute() && "Invalid attribute type to get the value as a ConstantRange!"); return pImpl->getValueAsConstantRange(); @@ -444,7 +444,7 @@ FPClassTest Attribute::getNoFPClass() const { return static_cast<FPClassTest>(pImpl->getValueAsInt()); } -ConstantRange Attribute::getRange() const { +const ConstantRange &Attribute::getRange() const { assert(hasAttribute(Attribute::Range) && "Trying to get range args from non-range attribute"); return pImpl->getValueAsConstantRange(); @@ -607,7 +607,7 @@ std::string Attribute::getAsString(bool InAttrGrp) const { if (hasAttribute(Attribute::Range)) { std::string Result; raw_string_ostream OS(Result); - ConstantRange CR = getValueAsConstantRange(); + const ConstantRange &CR = getValueAsConstantRange(); OS << "range("; OS << "i" << CR.getBitWidth() << " "; OS << CR.getLower() << ", " << CR.getUpper(); @@ -735,7 +735,7 @@ Type *AttributeImpl::getValueAsType() const { return static_cast<const TypeAttributeImpl *>(this)->getTypeValue(); } -ConstantRange AttributeImpl::getValueAsConstantRange() const { +const ConstantRange &AttributeImpl::getValueAsConstantRange() const { assert(isConstantRangeAttribute()); return static_cast<const ConstantRangeAttributeImpl *>(this) ->getConstantRangeValue(); diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp index 16ed167..41d3fce 100644 --- a/llvm/lib/IR/Verifier.cpp +++ b/llvm/lib/IR/Verifier.cpp @@ -2065,7 +2065,8 @@ void Verifier::verifyParameterAttrs(AttributeSet Attrs, Type *Ty, "Invalid value for 'nofpclass' test mask", V); } if (Attrs.hasAttribute(Attribute::Range)) { - auto CR = Attrs.getAttribute(Attribute::Range).getValueAsConstantRange(); + const ConstantRange &CR = + Attrs.getAttribute(Attribute::Range).getValueAsConstantRange(); Check(Ty->isIntOrIntVectorTy(CR.getBitWidth()), "Range bit width must match type bit width!", V); } diff --git a/llvm/lib/Transforms/Utils/FunctionComparator.cpp b/llvm/lib/Transforms/Utils/FunctionComparator.cpp index 67aeba7..d95248c 100644 --- a/llvm/lib/Transforms/Utils/FunctionComparator.cpp +++ b/llvm/lib/Transforms/Utils/FunctionComparator.cpp @@ -148,8 +148,8 @@ int FunctionComparator::cmpAttrs(const AttributeList L, if (LA.getKindAsEnum() != RA.getKindAsEnum()) return cmpNumbers(LA.getKindAsEnum(), RA.getKindAsEnum()); - ConstantRange LCR = LA.getRange(); - ConstantRange RCR = RA.getRange(); + const ConstantRange &LCR = LA.getRange(); + const ConstantRange &RCR = RA.getRange(); if (int Res = cmpAPInts(LCR.getLower(), RCR.getLower())) return Res; if (int Res = cmpAPInts(LCR.getUpper(), RCR.getUpper())) |