This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [rfc] Remove deprecated_extract/store_floating


> Date: Thu, 14 May 2009 13:32:57 +0200 (CEST)
> From: "Ulrich Weigand" <uweigand@de.ibm.com>
> 
> Hello,
> 
> this patch removes the old deprecated_extract_floating and
> deprecated_store_floating routines.  There was one remaining use
> in sh64-tdep.c, which seems an oversight and is trivially replacable
> by extract_typed_floating.
> 
> In addition, the patch inlines the extract_floating_by_length and
> store_floating_by_length into their callers, which leads to some
> simplification of the doublest.c code.
> 
> Tested on powerpc64-linux with no regression.
> I'm planning on committing this patch in a couple of days.

Looks good to me.

> ChangeLog:
> 
> 	* doublest.c (NAN): Remove unused define.
> 	(extract_floating_by_length, deprecated_extract_floating): Remove.
> 	(store_floating_by_length, deprecated_store_floating): Remove.
> 	(extract_typed_floating): Do not call extract_floating_by_length.
> 	(store_typed_floating): Do not call store_floating_by_length.
> 	(convert_typed_floating): Remove redundant assertions.
> 	* doublest.h (deprecated_extract_floating): Remove.
> 	(deprecated_store_floating): Remove.
> 	* sh64-tdep.c (sh64_register_convert_to_raw): Call
> 	extract_typed_floating instead of deprecated_extract_floating.
> 
> 
> Index: gdb-head/gdb/doublest.c
> ===================================================================
> --- gdb-head.orig/gdb/doublest.c
> +++ gdb-head/gdb/doublest.c
> @@ -800,65 +800,16 @@ floatformat_from_type (const struct type
>      return floatformat_from_length (TYPE_LENGTH (type));
>  }
>  
> -/* If the host doesn't define NAN, use zero instead.  */
> -#ifndef NAN
> -#define NAN 0.0
> -#endif
> -
> -/* Extract a floating-point number of length LEN from a target-order
> -   byte-stream at ADDR.  Returns the value as type DOUBLEST.  */
> -
> -static DOUBLEST
> -extract_floating_by_length (const void *addr, int len)
> -{
> -  const struct floatformat *fmt = floatformat_from_length (len);
> -  DOUBLEST val;
> -
> -  floatformat_to_doublest (fmt, addr, &val);
> -  return val;
> -}
> -
> -DOUBLEST
> -deprecated_extract_floating (const void *addr, int len)
> -{
> -  return extract_floating_by_length (addr, len);
> -}
> -
> -/* Store VAL as a floating-point number of length LEN to a
> -   target-order byte-stream at ADDR.  */
> -
> -static void
> -store_floating_by_length (void *addr, int len, DOUBLEST val)
> -{
> -  const struct floatformat *fmt = floatformat_from_length (len);
> -
> -  floatformat_from_doublest (fmt, &val, addr);
> -}
> -
> -void
> -deprecated_store_floating (void *addr, int len, DOUBLEST val)
> -{
> -  store_floating_by_length (addr, len, val);
> -}
> -
>  /* Extract a floating-point number of type TYPE from a target-order
>     byte-stream at ADDR.  Returns the value as type DOUBLEST.  */
>  
>  DOUBLEST
>  extract_typed_floating (const void *addr, const struct type *type)
>  {
> +  const struct floatformat *fmt = floatformat_from_type (type);
>    DOUBLEST retval;
>  
> -  gdb_assert (TYPE_CODE (type) == TYPE_CODE_FLT);
> -
> -  if (TYPE_FLOATFORMAT (type) == NULL)
> -    /* Not all code remembers to set the FLOATFORMAT (language
> -       specific code? stabs?) so handle that here as a special case.  */
> -    return extract_floating_by_length (addr, TYPE_LENGTH (type));
> -
> -  floatformat_to_doublest 
> -	(TYPE_FLOATFORMAT (type)[gdbarch_byte_order (current_gdbarch)],
> -			   addr, &retval);
> +  floatformat_to_doublest (fmt, addr, &retval);
>    return retval;
>  }
>  
> @@ -868,7 +819,7 @@ extract_typed_floating (const void *addr
>  void
>  store_typed_floating (void *addr, const struct type *type, DOUBLEST val)
>  {
> -  gdb_assert (TYPE_CODE (type) == TYPE_CODE_FLT);
> +  const struct floatformat *fmt = floatformat_from_type (type);
>  
>    /* FIXME: kettenis/2001-10-28: It is debatable whether we should
>       zero out any remaining bytes in the target buffer when TYPE is
> @@ -890,14 +841,7 @@ store_typed_floating (void *addr, const 
>       See also the function convert_typed_floating below.  */
>    memset (addr, 0, TYPE_LENGTH (type));
>  
> -  if (TYPE_FLOATFORMAT (type) == NULL)
> -    /* Not all code remembers to set the FLOATFORMAT (language
> -       specific code? stabs?) so handle that here as a special case.  */
> -    store_floating_by_length (addr, TYPE_LENGTH (type), val);
> -  else
> -    floatformat_from_doublest
> -	(TYPE_FLOATFORMAT (type)[gdbarch_byte_order (current_gdbarch)],
> -	&val, addr);
> +  floatformat_from_doublest (fmt, &val, addr);
>  }
>  
>  /* Convert a floating-point number of type FROM_TYPE from a
> @@ -911,9 +855,6 @@ convert_typed_floating (const void *from
>    const struct floatformat *from_fmt = floatformat_from_type (from_type);
>    const struct floatformat *to_fmt = floatformat_from_type (to_type);
>  
> -  gdb_assert (TYPE_CODE (from_type) == TYPE_CODE_FLT);
> -  gdb_assert (TYPE_CODE (to_type) == TYPE_CODE_FLT);
> -
>    if (from_fmt == NULL || to_fmt == NULL)
>      {
>        /* If we don't know the floating-point format of FROM_TYPE or
> Index: gdb-head/gdb/doublest.h
> ===================================================================
> --- gdb-head.orig/gdb/doublest.h
> +++ gdb-head/gdb/doublest.h
> @@ -85,17 +85,6 @@ extern enum float_kind floatformat_class
>  extern const char *floatformat_mantissa (const struct floatformat *,
>  					 const bfd_byte *);
>  
> -/* These functions have been replaced by extract_typed_floating and
> -   store_typed_floating.
> -
> -   Most calls are passing in TYPE_LENGTH (TYPE) so can be changed to
> -   just pass the TYPE.  The remainder pass in the length of a
> -   register, those calls should instead pass in the floating point
> -   type that corresponds to that length.  */
> -
> -extern DOUBLEST deprecated_extract_floating (const void *addr, int len);
> -extern void deprecated_store_floating (void *addr, int len, DOUBLEST val);
> -
>  /* Given TYPE, return its floatformat.  TYPE_FLOATFORMAT() may return
>     NULL.  type_floatformat() detects that and returns a floatformat
>     based on the type size when FLOATFORMAT is NULL.  */
> Index: gdb-head/gdb/sh64-tdep.c
> ===================================================================
> --- gdb-head.orig/gdb/sh64-tdep.c
> +++ gdb-head/gdb/sh64-tdep.c
> @@ -1577,7 +1577,7 @@ sh64_register_convert_to_raw (struct gdb
>        || (regnum >= DR0_C_REGNUM 
>  	  && regnum <= DR_LAST_C_REGNUM))
>      {
> -      DOUBLEST val = deprecated_extract_floating (from, TYPE_LENGTH(type));
> +      DOUBLEST val = extract_typed_floating (from, type);
>        floatformat_from_doublest (&floatformat_ieee_double_littlebyte_bigword, 
>  				 &val, to);
>      }
> -- 
>   Dr. Ulrich Weigand
>   GNU Toolchain for Linux on System z and Cell BE
>   Ulrich.Weigand@de.ibm.com
> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]