sprintf2.t: mark TODO bad denorm values under g++
authorDavid Mitchell <davem@iabyn.com>
Tue, 1 May 2018 14:28:49 +0000 (15:28 +0100)
committerDavid Mitchell <davem@iabyn.com>
Tue, 1 May 2018 14:52:55 +0000 (15:52 +0100)
commit38c84d6ad1b77d7b1de424eab465e018c7cef576
treed36e8ced82c59af5f3b9789944ba2579f77a1168
parente8d0f503dda9584e121438f7f871492195d9e3a5
sprintf2.t: mark TODO bad denorm values under g++

Some t/op/sprintf2.t tests were failing under g++. This is due the perl
toker interpreting very small literal hex floating pointers as 0 rather
than as a subnormal value.

For example:

    perl -le'print "bad" if 0x1.fffffffffffffp-1022 == 0.0'

This breaks some of the sprintf2.t tests, so mark them TODO them if the
literal value evaluates to zero.

Note that this is a bug in the toker/g++/glibc rather than sprintf.

The issue is due to the use of pow() in scan_num():

under gcc and plain g++, pow(2.0, -1074) returns the smallest denorm
number; however, under 'g++ -ansi', it returns 0.0.
t/op/sprintf2.t