forked from OSchip/llvm-project
[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
This commit is contained in:
parent
0cbc1b0de4
commit
5ad5c3c7ed
|
@ -4443,8 +4443,10 @@ APFloat::APFloat(const fltSemantics &Semantics, StringRef S)
|
||||||
|
|
||||||
APFloat::opStatus APFloat::convert(const fltSemantics &ToSemantics,
|
APFloat::opStatus APFloat::convert(const fltSemantics &ToSemantics,
|
||||||
roundingMode RM, bool *losesInfo) {
|
roundingMode RM, bool *losesInfo) {
|
||||||
if (&getSemantics() == &ToSemantics)
|
if (&getSemantics() == &ToSemantics) {
|
||||||
|
*losesInfo = false;
|
||||||
return opOK;
|
return opOK;
|
||||||
|
}
|
||||||
if (usesLayout<IEEEFloat>(getSemantics()) &&
|
if (usesLayout<IEEEFloat>(getSemantics()) &&
|
||||||
usesLayout<IEEEFloat>(ToSemantics))
|
usesLayout<IEEEFloat>(ToSemantics))
|
||||||
return U.IEEE.convert(ToSemantics, RM, losesInfo);
|
return U.IEEE.convert(ToSemantics, RM, losesInfo);
|
||||||
|
|
Loading…
Reference in New Issue