[PATCH] D24011: [ConstantFold] Add a flag for ppc_fp128 constant folding, since APFloat doesn't support double-double semantic
Tim Shen via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 29 16:43:23 PDT 2016
timshen added a comment.
In https://reviews.llvm.org/D24011#528387, @majnemer wrote:
> I'd be more comfortable with a patch that didn't attempt to fold in the face of PPCDoubleDouble without a flag to control it.
We (me and iteratee) don't mind removing the flags. @hfinkel and @kbarton?
In https://reviews.llvm.org/D24011#528401, @hfinkel wrote:
> In the past, we've been comfortable leaving this as an open known issue, especially given that the semantics of PPC long double are not IEEE anyway - the real fix involves creating an APFloat-based double-double implementation which can be used to evaluate constants.
The problem this patch fixes is not the IEEE conformance, but the consistency. Currently libstdc++ `std::numeric_limits<long double>::epsilon()` returns an epsilon value that may be suitable for double-double semantic, but not suitable for the compile-time IEEE 128 semantic.
> How important is it that we make this kind of change now?
By "this kind of change" you mean being able to turn off constant folding for ppc_fp128? We observe internal test failures that due to the mix of using `std::numeric_limits<long double>::epsilon()` and LLVM constant folding, and we'd like to make the tests green, especially when they seem use the standard library correctly. :)
More information about the llvm-commits