> On 9 Jan 2019, at 10:14, Jakub Jelinek <ja...@redhat.com> wrote:
> 
> On Wed, Jan 09, 2019 at 09:37:40AM +0000, Jonathan Wakely wrote:
>> The IBM128 long double format isn't foldable in constant expressions, so
>> conditionally skip the std::complex<long double> cases when they'll
>> fail.
>> 
>>      PR libstdc++/88204
>>      * testsuite/26_numerics/complex/operators/more_constexpr.cc: Do not
>>      test std::complex<long double> if long double format is IBM128.
>>      * testsuite/26_numerics/complex/requirements/more_constexpr.cc:
>>      Likewise.
>> 
>> Tested powerpc64le-linux, committed to trunk.
> 
> Thanks for doing that.  Due to the variable number of bits in the mantissa
> unless we represent the double-double constants in the compiler as a pair of
> doubles there will be always many cases that can't be folded.  That said,
> I've been wondering if we couldn't fold at least the basic arithmetics on
> some constants, essentially by emulating what will happen at runtime.  I.e.
> if we want to constant fold PLUS_EXPR (or MINUS_EXPR, MULT_EXPR, *DIV_EXPR,
> and a few others) of two double-double REAL_CSTs, split them into two
> double values by rounding to a double, subtracting that double and rounding
> the remainder to double, perform whatever we emit inline or the runtime
> library does for the basic operations and in the end check if the result of
> that operation fits in the canonical format we pretend for the double-double
> (i.e. the 106 bits mantissa etc.) and if it does, allow constant folding
> that.  E.g. in Red Hat bugzilla I think we have several spots where people
> complain about this lack of folding, it breaks a couple of real-world apps
> etc.  Or is double-double considered dead format that will hopefully soon go
> away, not worth spending more time on?

It’s also 
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=19779
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=26374

in the latter, Andrew Pinski suggests using MPFR, but there’s no patch.

(there might be others in our BZ)

Iain

Reply via email to