aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Gottesman <mgottesman@apple.com>2013-06-24 09:58:02 +0000
committerMichael Gottesman <mgottesman@apple.com>2013-06-24 09:58:02 +0000
commitfdec0c7a7302702d08f1221609221018af8085ec (patch)
tree322c301ab9e6ba9963310adf2fd4df04d3f30602
parentfb25071a18ef24949f2f422c919b85340d6c6e2a (diff)
downloadexternal_llvm-fdec0c7a7302702d08f1221609221018af8085ec.tar.gz
external_llvm-fdec0c7a7302702d08f1221609221018af8085ec.tar.bz2
external_llvm-fdec0c7a7302702d08f1221609221018af8085ec.zip
[APFloat] Added make{Zero,Inf} methods and implemented get{Zero,Inf} on top of them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184712 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/ADT/APFloat.h10
-rw-r--r--lib/Support/APFloat.cpp16
2 files changed, 24 insertions, 2 deletions
diff --git a/include/llvm/ADT/APFloat.h b/include/llvm/ADT/APFloat.h
index e3b26f6ca1..3d4a632e53 100644
--- a/include/llvm/ADT/APFloat.h
+++ b/include/llvm/ADT/APFloat.h
@@ -211,14 +211,18 @@ public:
///
/// \param Negative True iff the number should be negative.
static APFloat getZero(const fltSemantics &Sem, bool Negative = false) {
- return APFloat(Sem, fcZero, Negative);
+ APFloat Val(Sem, uninitialized);
+ Val.makeZero(Negative);
+ return Val;
}
/// Factory for Positive and Negative Infinity.
///
/// \param Negative True iff the number should be negative.
static APFloat getInf(const fltSemantics &Sem, bool Negative = false) {
- return APFloat(Sem, fcInfinity, Negative);
+ APFloat Val(Sem, uninitialized);
+ Val.makeInf(Negative);
+ return Val;
}
/// Factory for QNaN values.
@@ -498,6 +502,8 @@ private:
void makeNaN(bool SNaN = false, bool Neg = false, const APInt *fill = 0);
static APFloat makeNaN(const fltSemantics &Sem, bool SNaN, bool Negative,
const APInt *fill);
+ void makeInf(bool Neg = false);
+ void makeZero(bool Neg = false);
/// @}
diff --git a/lib/Support/APFloat.cpp b/lib/Support/APFloat.cpp
index db1d61c281..ec50064f42 100644
--- a/lib/Support/APFloat.cpp
+++ b/lib/Support/APFloat.cpp
@@ -3827,3 +3827,19 @@ APFloat::opStatus APFloat::next(bool nextDown) {
return result;
}
+
+void
+APFloat::makeInf(bool Negative) {
+ category = fcInfinity;
+ sign = Negative;
+ exponent = semantics->maxExponent + 1;
+ APInt::tcSet(significandParts(), 0, partCount());
+}
+
+void
+APFloat::makeZero(bool Negative) {
+ category = fcZero;
+ sign = Negative;
+ exponent = semantics->minExponent-1;
+ APInt::tcSet(significandParts(), 0, partCount());
+}