Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion llvm/include/llvm/ADT/APFloat.h
Original file line number Diff line number Diff line change
Expand Up @@ -805,7 +805,7 @@ IEEEFloat frexp(const IEEEFloat &Val, int &Exp, roundingMode RM);
class DoubleAPFloat final {
// Note: this must be the first data member.
const fltSemantics *Semantics;
std::unique_ptr<APFloat[]> Floats;
APFloat *Floats;

opStatus addImpl(const APFloat &a, const APFloat &aa, const APFloat &c,
const APFloat &cc, roundingMode RM);
Expand All @@ -821,6 +821,7 @@ class DoubleAPFloat final {
DoubleAPFloat(const fltSemantics &S, APFloat &&First, APFloat &&Second);
DoubleAPFloat(const DoubleAPFloat &RHS);
DoubleAPFloat(DoubleAPFloat &&RHS);
~DoubleAPFloat();

DoubleAPFloat &operator=(const DoubleAPFloat &RHS);
inline DoubleAPFloat &operator=(DoubleAPFloat &&RHS);
Expand Down Expand Up @@ -1659,6 +1660,10 @@ const APFloat &DoubleAPFloat::getFirst() const { return Floats[0]; }
APFloat &DoubleAPFloat::getSecond() { return Floats[1]; }
const APFloat &DoubleAPFloat::getSecond() const { return Floats[1]; }

inline DoubleAPFloat::~DoubleAPFloat() {
delete[] Floats;
}

} // namespace detail

} // namespace llvm
Expand Down
3 changes: 2 additions & 1 deletion llvm/lib/Support/APFloat.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4876,8 +4876,9 @@ DoubleAPFloat::DoubleAPFloat(const DoubleAPFloat &RHS)
}

DoubleAPFloat::DoubleAPFloat(DoubleAPFloat &&RHS)
: Semantics(RHS.Semantics), Floats(std::move(RHS.Floats)) {
: Semantics(RHS.Semantics), Floats(RHS.Floats) {
RHS.Semantics = &semBogus;
RHS.Floats = nullptr;
assert(Semantics == &semPPCDoubleDouble);
}

Expand Down
Loading