From d45e3881e15ec032e431d5f9414ee91c15802616 Mon Sep 17 00:00:00 2001 From: Peter Collingbourne Date: Wed, 5 Mar 2025 19:39:22 -0800 Subject: [PATCH 1/2] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20in?= =?UTF-8?q?itial=20version?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Created using spr 1.3.6-beta.1 --- llvm/include/llvm/ADT/APFloat.h | 7 ++++++- llvm/lib/Support/APFloat.cpp | 3 ++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/llvm/include/llvm/ADT/APFloat.h b/llvm/include/llvm/ADT/APFloat.h index 70fbf2059841e..9962c878cfbfc 100644 --- a/llvm/include/llvm/ADT/APFloat.h +++ b/llvm/include/llvm/ADT/APFloat.h @@ -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 Floats; + APFloat *Floats; opStatus addImpl(const APFloat &a, const APFloat &aa, const APFloat &c, const APFloat &cc, roundingMode RM); @@ -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); @@ -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 diff --git a/llvm/lib/Support/APFloat.cpp b/llvm/lib/Support/APFloat.cpp index cbee7f48b8773..cfc3c3b4974c5 100644 --- a/llvm/lib/Support/APFloat.cpp +++ b/llvm/lib/Support/APFloat.cpp @@ -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); } From 74def902832b8cdc7a5d98ff96a5bdc1129aa604 Mon Sep 17 00:00:00 2001 From: Peter Collingbourne Date: Wed, 5 Mar 2025 21:14:54 -0800 Subject: [PATCH 2/2] clang-format Created using spr 1.3.6-beta.1 --- llvm/include/llvm/ADT/APFloat.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/llvm/include/llvm/ADT/APFloat.h b/llvm/include/llvm/ADT/APFloat.h index 9962c878cfbfc..00d92740259eb 100644 --- a/llvm/include/llvm/ADT/APFloat.h +++ b/llvm/include/llvm/ADT/APFloat.h @@ -1660,9 +1660,7 @@ 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; -} +inline DoubleAPFloat::~DoubleAPFloat() { delete[] Floats; } } // namespace detail