X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gas%2Fatof-generic.c;h=3ddeb223cf26aa00e4722da4fe7908149d3ee35f;hb=ad89c2aa677c28c76ffd5a35e2b36eece4d82597;hp=6b6c7b25e91e95f5b15380a558c4aa6bb41b7275;hpb=47eebc207fc8d4cc5611eb946ba04398e47ea15b;p=deliverable%2Fbinutils-gdb.git diff --git a/gas/atof-generic.c b/gas/atof-generic.c index 6b6c7b25e9..3ddeb223cf 100644 --- a/gas/atof-generic.c +++ b/gas/atof-generic.c @@ -1,25 +1,22 @@ /* atof_generic.c - turn a string of digits into a Flonum - Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001 - Free Software Foundation, Inc. + Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. GAS is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) + the Free Software Foundation; either version 3, or (at your option) any later version. - GAS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GAS is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. You should have received a copy of the GNU General Public License along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ - -#include + Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA + 02110-1301, USA. */ #include "as.h" #include "safe-ctype.h" @@ -32,7 +29,7 @@ #endif #ifdef TRACE -static void flonum_print PARAMS ((const FLONUM_TYPE *)); +static void flonum_print (const FLONUM_TYPE *); #endif #define ASSUME_DECIMAL_MARK_IS_DOT @@ -75,16 +72,12 @@ static void flonum_print PARAMS ((const FLONUM_TYPE *)); */ int -atof_generic (address_of_string_pointer, - string_of_decimal_marks, - string_of_decimal_exponent_marks, - address_of_generic_floating_point_number) - /* return pointer to just AFTER number we read. */ - char **address_of_string_pointer; - /* At most one per number. */ - const char *string_of_decimal_marks; - const char *string_of_decimal_exponent_marks; - FLONUM_TYPE *address_of_generic_floating_point_number; +atof_generic (/* return pointer to just AFTER number we read. */ + char **address_of_string_pointer, + /* At most one per number. */ + const char *string_of_decimal_marks, + const char *string_of_decimal_exponent_marks, + FLONUM_TYPE *address_of_generic_floating_point_number) { int return_value; /* 0 means OK. */ char *first_digit; @@ -107,7 +100,7 @@ atof_generic (address_of_string_pointer, int seen_significant_digit; #ifdef ASSUME_DECIMAL_MARK_IS_DOT - assert (string_of_decimal_marks[0] == '.' + gas_assert (string_of_decimal_marks[0] == '.' && string_of_decimal_marks[1] == 0); #define IS_DECIMAL_MARK(c) ((c) == '.') #else @@ -328,19 +321,10 @@ atof_generic (address_of_string_pointer, + 1); /* Number of destination littlenums. */ /* Includes guard bits (two littlenums worth) */ -#if 0 /* The integer version below is very close, and it doesn't - require floating point support (which is currently buggy on - the Alpha). */ - maximum_useful_digits = (((double) (precision - 2)) - * ((double) (LITTLENUM_NUMBER_OF_BITS)) - / (LOG_TO_BASE_2_OF_10)) - + 2; /* 2 :: guard digits. */ -#else maximum_useful_digits = (((precision - 2)) * ( (LITTLENUM_NUMBER_OF_BITS)) * 1000000 / 3321928) + 2; /* 2 :: guard digits. */ -#endif if (number_of_digits_available > maximum_useful_digits) { @@ -357,13 +341,8 @@ atof_generic (address_of_string_pointer, decimal_exponent += ((long) number_of_digits_before_decimal - (long) number_of_digits_to_use); -#if 0 - more_than_enough_bits_for_digits - = ((((double) number_of_digits_to_use) * LOG_TO_BASE_2_OF_10) + 1); -#else more_than_enough_bits_for_digits = (number_of_digits_to_use * 3321928 / 1000000 + 1); -#endif more_than_enough_littlenums_for_digits = (more_than_enough_bits_for_digits