summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support/APFloat.cpp
diff options
context:
space:
mode:
authorSven van Haastregt <sven.vanhaastregt@arm.com>2018-05-11 09:45:42 +0000
committerSven van Haastregt <sven.vanhaastregt@arm.com>2018-05-11 09:45:42 +0000
commit5ad5c3c7ed231d9c319cbe91f74f88f8bce59688 (patch)
tree541190d14e56663037d1a5c5a798656ed0be2ba5 /llvm/lib/Support/APFloat.cpp
parent0cbc1b0de43f4e0e7817154e69d2a80822b5881f (diff)
downloadbcm5719-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.cpp4
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);
OpenPOWER on IntegriCloud