diff options
author | Sven van Haastregt <sven.vanhaastregt@arm.com> | 2018-05-11 09:45:42 +0000 |
---|---|---|
committer | Sven van Haastregt <sven.vanhaastregt@arm.com> | 2018-05-11 09:45:42 +0000 |
commit | 5ad5c3c7ed231d9c319cbe91f74f88f8bce59688 (patch) | |
tree | 541190d14e56663037d1a5c5a798656ed0be2ba5 /llvm/lib/Support/APFloat.cpp | |
parent | 0cbc1b0de43f4e0e7817154e69d2a80822b5881f (diff) | |
download | bcm5719-llvm-5ad5c3c7ed231d9c319cbe91f74f88f8bce59688.tar.gz bcm5719-llvm-5ad5c3c7ed231d9c319cbe91f74f88f8bce59688.zip |
[APFloat] Set losesInfo on no-op convert
losesInfo would be left unset when no conversion needs to be done. A
caller such as InstCombine's fitsInFPType would then branch on an
uninitialized value.
Caught using valgrind on an out-of-tree target.
Differential Revision: https://reviews.llvm.org/D46645
llvm-svn: 332087
Diffstat (limited to 'llvm/lib/Support/APFloat.cpp')
-rw-r--r-- | llvm/lib/Support/APFloat.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/llvm/lib/Support/APFloat.cpp b/llvm/lib/Support/APFloat.cpp index 9035017a9c4..24005c1890c 100644 --- a/llvm/lib/Support/APFloat.cpp +++ b/llvm/lib/Support/APFloat.cpp @@ -4443,8 +4443,10 @@ APFloat::APFloat(const fltSemantics &Semantics, StringRef S) APFloat::opStatus APFloat::convert(const fltSemantics &ToSemantics, roundingMode RM, bool *losesInfo) { - if (&getSemantics() == &ToSemantics) + if (&getSemantics() == &ToSemantics) { + *losesInfo = false; return opOK; + } if (usesLayout<IEEEFloat>(getSemantics()) && usesLayout<IEEEFloat>(ToSemantics)) return U.IEEE.convert(ToSemantics, RM, losesInfo); |