Module Name: src Committed By: riz Date: Fri Jul 16 19:03:21 UTC 2010
Modified Files: src/gnu/dist/binutils/gas [netbsd-5]: atof-generic.c src/gnu/dist/binutils/gas/config [netbsd-5]: atof-vax.c Log Message: Pull up following revision(s) (requested by jklos in ticket #1427): gnu/dist/binutils/gas/config/atof-vax.c gnu/dist/binutils/gas/atof-generic.c >From Matt Thomas, suggested upstream: * atof-generic.c (atof_generic): recognize snan and qnan in addition to nan and inf. * atof-vax.c (flonum_gen2vax): deal properly with nan, snan, qnan, and +Inf and -Inf codes. This fixes PR toolchain/43303. To generate a diff of this commit: cvs rdiff -u -r1.1.1.3 -r1.1.1.3.26.1 \ src/gnu/dist/binutils/gas/atof-generic.c cvs rdiff -u -r1.1.1.1 -r1.1.1.1.38.1 \ src/gnu/dist/binutils/gas/config/atof-vax.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/gnu/dist/binutils/gas/atof-generic.c diff -u src/gnu/dist/binutils/gas/atof-generic.c:1.1.1.3 src/gnu/dist/binutils/gas/atof-generic.c:1.1.1.3.26.1 --- src/gnu/dist/binutils/gas/atof-generic.c:1.1.1.3 Thu Feb 2 20:55:07 2006 +++ src/gnu/dist/binutils/gas/atof-generic.c Fri Jul 16 19:03:21 2010 @@ -123,6 +123,32 @@ switch (first_digit[0]) { + case 's': + case 'S': + if (!strncasecmp ("snan", first_digit, 4)) + { + address_of_generic_floating_point_number->sign = 0; + address_of_generic_floating_point_number->exponent = 0; + address_of_generic_floating_point_number->leader = + address_of_generic_floating_point_number->low; + *address_of_string_pointer = first_digit + 4; + return 0; + } + break; + + case 'q': + case 'Q': + if (!strncasecmp ("qnan", first_digit, 4)) + { + address_of_generic_floating_point_number->sign = 0; + address_of_generic_floating_point_number->exponent = 0; + address_of_generic_floating_point_number->leader = + address_of_generic_floating_point_number->low; + *address_of_string_pointer = first_digit + 4; + return 0; + } + break; + case 'n': case 'N': if (!strncasecmp ("nan", first_digit, 3)) Index: src/gnu/dist/binutils/gas/config/atof-vax.c diff -u src/gnu/dist/binutils/gas/config/atof-vax.c:1.1.1.1 src/gnu/dist/binutils/gas/config/atof-vax.c:1.1.1.1.38.1 --- src/gnu/dist/binutils/gas/config/atof-vax.c:1.1.1.1 Wed Nov 26 11:34:23 2003 +++ src/gnu/dist/binutils/gas/config/atof-vax.c Fri Jul 16 19:03:21 2010 @@ -292,10 +292,27 @@ int exponent_skippage; LITTLENUM_TYPE word1; - /* JF: Deal with new Nan, +Inf and -Inf codes */ if (f->sign != '-' && f->sign != '+') { - make_invalid_floating_point_number (words); + if (f->sign == 0) + { + /* All NaNs are 0. */ + memset (words, 0x00, sizeof (LITTLENUM_TYPE) * precision); + } + else if (f->sign == 'P') + { + /* Positive Infinity. */ + memset (words, 0xff, sizeof (LITTLENUM_TYPE) * precision); + words[0] &= 0x7fff; + } + else if (f->sign == 'N') + { + /* Negative Infinity. */ + memset (words, 0x00, sizeof (LITTLENUM_TYPE) * precision); + words[0] = 0x0080; + } + else + make_invalid_floating_point_number (words); return return_value; } /*