[ConstantFolding] Fix GetConstantFoldFPValue to avoid cast overflow.
authorBixia Zheng <bixia@google.com>
Fri, 22 Mar 2019 16:37:37 +0000 (16:37 +0000)
committerBixia Zheng <bixia@google.com>
Fri, 22 Mar 2019 16:37:37 +0000 (16:37 +0000)
commitbdf0230cffd13425a7f3492cc7c514fc60173537
treed60d76459b69a4fbbe55c75fc0cf2a38d2fb6f11
parent71ebc9eb0b0586c7d995f42e14c1e0180cc299b9
[ConstantFolding] Fix GetConstantFoldFPValue to avoid cast overflow.

Summary:
In C++, the behavior of casting a double value that is beyond the range
of a single precision floating-point to a float value is undefined. This
change replaces such a cast with APFloat::convert to convert the value,
which is consistent with how we convert a double value to a half value.

Reviewers: sanjoy

Subscribers: lebedev.ri, sanjoy, jlebar, llvm-commits

Tags: #llvm

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

llvm-svn: 356781
llvm/lib/Analysis/ConstantFolding.cpp
llvm/test/Transforms/ConstProp/calls.ll