[PATCH] PR libstdc++/88204 disable std::complex<long double> tests

Iain Sandoe idsandoe@googlemail.com
Wed Jan 9 10:36:00 GMT 2019


> On 9 Jan 2019, at 10:14, Jakub Jelinek <jakub@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



More information about the Gcc-patches mailing list