]> granicus.if.org Git - llvm/commitdiff
[APFloat] APFloat::Storage::Storage - refix use after move
authorNick Desaulniers <ndesaulniers@google.com>
Fri, 7 Jun 2019 19:51:22 +0000 (19:51 +0000)
committerNick Desaulniers <ndesaulniers@google.com>
Fri, 7 Jun 2019 19:51:22 +0000 (19:51 +0000)
Summary:
Re-land r360675 after it was reverted in r360770.

This was reported in:
https://llvm.org/reports/scan-build/

Based on feedback in:
https://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20190513/652286.html

Reviewers: RKSimon, efriedma

Reviewed By: RKSimon, efriedma

Subscribers: eli.friedman, hiraditya, llvm-commits, srhines

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D62767

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@362833 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Support/APFloat.cpp

index 208950d7ab714b3052b51161b6025de441217307..d2cd8b4b6889919fb46e9b22d33e6dfe97c8717e 100644 (file)
@@ -4418,8 +4418,9 @@ APFloat::Storage::Storage(IEEEFloat F, const fltSemantics &Semantics) {
     return;
   }
   if (usesLayout<DoubleAPFloat>(Semantics)) {
+    const fltSemantics& S = F.getSemantics();
     new (&Double)
-        DoubleAPFloat(Semantics, APFloat(std::move(F), F.getSemantics()),
+        DoubleAPFloat(Semantics, APFloat(std::move(F), S),
                       APFloat(semIEEEdouble));
     return;
   }