mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-27 13:30:05 +00:00
APFloat: Add a move ctor and operator=
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@202883 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
afee151fe8
commit
f0a0ceb034
@ -196,6 +196,7 @@ public:
|
||||
explicit APFloat(double d);
|
||||
explicit APFloat(float f);
|
||||
APFloat(const APFloat &);
|
||||
APFloat(APFloat &&);
|
||||
~APFloat();
|
||||
|
||||
/// @}
|
||||
@ -411,6 +412,7 @@ public:
|
||||
/// @}
|
||||
|
||||
APFloat &operator=(const APFloat &);
|
||||
APFloat &operator=(APFloat &&);
|
||||
|
||||
/// \brief Overload to compute a hash code for an APFloat value.
|
||||
///
|
||||
|
@ -683,6 +683,20 @@ APFloat::operator=(const APFloat &rhs)
|
||||
return *this;
|
||||
}
|
||||
|
||||
APFloat &
|
||||
APFloat::operator=(APFloat &&rhs) {
|
||||
freeSignificand();
|
||||
|
||||
semantics = rhs.semantics;
|
||||
significand = rhs.significand;
|
||||
exponent = rhs.exponent;
|
||||
category = rhs.category;
|
||||
sign = rhs.sign;
|
||||
|
||||
rhs.semantics = &Bogus;
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool
|
||||
APFloat::isDenormal() const {
|
||||
return isFiniteNonZero() && (exponent == semantics->minExponent) &&
|
||||
@ -806,6 +820,10 @@ APFloat::APFloat(const APFloat &rhs) {
|
||||
assign(rhs);
|
||||
}
|
||||
|
||||
APFloat::APFloat(APFloat &&rhs) : semantics(&Bogus) {
|
||||
*this = std::move(rhs);
|
||||
}
|
||||
|
||||
APFloat::~APFloat()
|
||||
{
|
||||
freeSignificand();
|
||||
|
Loading…
Reference in New Issue
Block a user