http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56379



--- Comment #2 from Tobias Burnus <burnus at gcc dot gnu.org> 2013-02-18 
23:42:18 UTC ---

Some debugging. If one adds the following debugging patch:



--- a/libquadmath/strtod/strtod_l.c

+++ b/libquadmath/strtod/strtod_l.c

@@ -441,3 +441,5 @@ mpn_lshift_1 (mp_limb_t *ptr, mp_size_t size, unsigned int

count,

     {

+printf("1:mpn_lshift_1 ptr=%lu, size=%u, count=%u\n", ptr[0], size, count);

       (void) mpn_lshift (ptr, ptr, size, count);

+printf("2:mpn_lshift_1 ptr=%lu, size=%u, count=%u\n", ptr[0], size, count);

       ptr[0] |= limb >> (BITS_PER_MP_LIMB - count);





One gets with -O1 (for strtod/strtoflt128.c):

1:mpn_lshift_1 ptr=7640891576956012808, size=2, count=48

2:mpn_lshift_1 ptr=14485828201437200384, size=2, count=48

sqrt(2)=1.41421356237309504880168872420969798

r      =1.41421356237309504880168872420969798





And with -O0 (for strtod/strtoflt128.c):

1:mpn_lshift_1 ptr=1, size=2, count=64

2:mpn_lshift_1 ptr=1, size=2, count=64

1:mpn_lshift_1 ptr=7640891576956012809, size=2, count=48

2:mpn_lshift_1 ptr=14486109676413911040, size=2, count=48

sqrt(2)=1.41421356237309504880168872420969798

r      =1.41421356237309504885589883283397321





Note: "mpn_lshift" itself is in printf/lshift.c, which is compiled with default

options, i.e. with -O2.

Reply via email to