diff --git a/llvm/include/llvm/IR/Attributes.h b/llvm/include/llvm/IR/Attributes.h index 5e3ba1f32e6ab..dd11955714895 100644 --- a/llvm/include/llvm/IR/Attributes.h +++ b/llvm/include/llvm/IR/Attributes.h @@ -224,7 +224,7 @@ class Attribute { /// Return the attribute's value as a ConstantRange. This requires the /// attribute to be a ConstantRange attribute. - ConstantRange getValueAsConstantRange() const; + const ConstantRange &getValueAsConstantRange() const; /// Returns the alignment field of an attribute as a byte alignment /// value. @@ -265,7 +265,7 @@ class Attribute { FPClassTest getNoFPClass() const; /// Returns the value of the range attribute. - ConstantRange getRange() const; + const ConstantRange &getRange() const; /// The Attribute is converted to a string of equivalent mnemonic. This /// is, presumably, for writing out the mnemonics for the assembly writer. diff --git a/llvm/lib/IR/AttributeImpl.h b/llvm/lib/IR/AttributeImpl.h index 9a6427bbc3d55..a71a36da0aa05 100644 --- a/llvm/lib/IR/AttributeImpl.h +++ b/llvm/lib/IR/AttributeImpl.h @@ -77,7 +77,7 @@ class AttributeImpl : public FoldingSetNode { 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 @@ class ConstantRangeAttributeImpl : public EnumAttributeImpl { 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 9c48a481de1ff..7a04b618d6080 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(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(this)->getTypeValue(); } -ConstantRange AttributeImpl::getValueAsConstantRange() const { +const ConstantRange &AttributeImpl::getValueAsConstantRange() const { assert(isConstantRangeAttribute()); return static_cast(this) ->getConstantRangeValue(); diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp index e42cc7e260ef1..a0f6c72e78046 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 67aeba7048f86..d95248c84b860 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()))