diff --git a/include/llvm/CodeGen/SelectionDAGNodes.h b/include/llvm/CodeGen/SelectionDAGNodes.h index acee9841585..fed77a53ce6 100644 --- a/include/llvm/CodeGen/SelectionDAGNodes.h +++ b/include/llvm/CodeGen/SelectionDAGNodes.h @@ -1154,7 +1154,7 @@ protected: getSDVTList(VT)), Value(VT==MVT::f64 ? APFloat(val) : APFloat((float)val)) { } - ConstantFPSDNode(bool isTarget, APFloat val, MVT::ValueType VT) + ConstantFPSDNode(bool isTarget, const APFloat& val, MVT::ValueType VT) : SDNode(isTarget ? ISD::TargetConstantFP : ISD::ConstantFP, getSDVTList(VT)), Value(val) { } @@ -1168,7 +1168,7 @@ public: else return Value.convertToFloat(); } - APFloat getValueAPF() const { return Value; } + const APFloat& getValueAPF() const { return Value; } /// isExactlyValue - We don't rely on operator== working on double values, as /// it returns true for things that are clearly not equal, like -0.0 and 0.0. @@ -1180,7 +1180,7 @@ public: else return isExactlyValue(APFloat((float)V)); } - bool isExactlyValue(APFloat V) const; + bool isExactlyValue(const APFloat& V) const; static bool classof(const ConstantFPSDNode *) { return true; } static bool classof(const SDNode *N) { diff --git a/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index 2b119a095aa..fda0589a6de 100644 --- a/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -3195,7 +3195,7 @@ SDOperand DAGCombiner::visitFCOPYSIGN(SDNode *N) { return DAG.getNode(ISD::FCOPYSIGN, VT, N0, N1); if (N1CFP) { - APFloat V = N1CFP->getValueAPF(); + const APFloat& V = N1CFP->getValueAPF(); // copysign(x, c1) -> fabs(x) iff ispos(c1) // copysign(x, c1) -> fneg(fabs(x)) iff isneg(c1) if (!V.isNegative()) diff --git a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index 4bd07b60b7f..055834b5039 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -48,7 +48,7 @@ static SDVTList makeVTList(const MVT::ValueType *VTs, unsigned NumVTs) { /// it returns true for things that are clearly not equal, like -0.0 and 0.0. /// As such, this method can be used to do an exact bit-for-bit comparison of /// two floating point values. -bool ConstantFPSDNode::isExactlyValue(APFloat V) const { +bool ConstantFPSDNode::isExactlyValue(const APFloat& V) const { return Value.bitwiseIsEqual(V); }