All of lore.kernel.org
 help / color / mirror / Atom feed
From: Leon Alrae <leon.alrae@imgtec.com>
To: "Maciej W. Rozycki" <macro@linux-mips.org>, qemu-devel@nongnu.org
Cc: Thomas Schwinge <thomas@codesourcery.com>,
	Aurelien Jarno <aurelien@aurel32.net>
Subject: Re: [Qemu-devel] [PATCH v2 3/7] softfloat: Convert `*_default_nan' variables into inline functions
Date: Fri, 30 Jan 2015 14:09:35 +0000	[thread overview]
Message-ID: <54CB909F.9010506@imgtec.com> (raw)
In-Reply-To: <alpine.DEB.1.10.1412121928210.19155@tp.orcam.me.uk>

On 12/12/2014 19:34, Maciej W. Rozycki wrote:
> Mechanically replace `*_default_nan' variables with inline functions and 
> convert references accordingly.  Use `__inline__' rather than `inline' 
> so that the latter does not cause the definitions to become static as a 
> result of macro expansion, the functions are best inlined when referred 
> to from softfloat.c, but external copies must be also produced for 
> external callers.
> 
> Signed-off-by: Thomas Schwinge <thomas@codesourcery.com>
> Signed-off-by: Maciej W. Rozycki <macro@codesourcery.com>
<snip>
> Index: qemu-git-trunk/include/fpu/softfloat.h
> ===================================================================
> --- qemu-git-trunk.orig/include/fpu/softfloat.h	2014-12-11 18:15:02.000000000 +0000
> +++ qemu-git-trunk/include/fpu/softfloat.h	2014-12-11 18:18:00.918095644 +0000
> @@ -370,7 +370,7 @@ static inline int float16_is_any_nan(flo
>  /*----------------------------------------------------------------------------
>  | The pattern for a default generated half-precision NaN.
>  *----------------------------------------------------------------------------*/
> -extern const float16 float16_default_nan;
> +__inline__ float16 float16_default_nan(void);
>  
>  /*----------------------------------------------------------------------------
>  | Software IEC/IEEE single-precision conversion routines.
> @@ -482,7 +482,7 @@ static inline float32 float32_set_sign(f
>  /*----------------------------------------------------------------------------
>  | The pattern for a default generated single-precision NaN.
>  *----------------------------------------------------------------------------*/
> -extern const float32 float32_default_nan;
> +__inline__ float32 float32_default_nan(void);
>  
>  /*----------------------------------------------------------------------------
>  | Software IEC/IEEE double-precision conversion routines.
> @@ -594,7 +594,7 @@ static inline float64 float64_set_sign(f
>  /*----------------------------------------------------------------------------
>  | The pattern for a default generated double-precision NaN.
>  *----------------------------------------------------------------------------*/
> -extern const float64 float64_default_nan;
> +__inline__ float64 float64_default_nan(void);
>  
>  /*----------------------------------------------------------------------------
>  | Software IEC/IEEE extended double-precision conversion routines.
> @@ -679,7 +679,7 @@ static inline int floatx80_is_any_nan(fl
>  /*----------------------------------------------------------------------------
>  | The pattern for a default generated extended double-precision NaN.
>  *----------------------------------------------------------------------------*/
> -extern const floatx80 floatx80_default_nan;
> +__inline__ floatx80 floatx80_default_nan(void);
>  
>  /*----------------------------------------------------------------------------
>  | Software IEC/IEEE quadruple-precision conversion routines.
> @@ -760,6 +760,6 @@ static inline int float128_is_any_nan(fl
>  /*----------------------------------------------------------------------------
>  | The pattern for a default generated quadruple-precision NaN.
>  *----------------------------------------------------------------------------*/
> -extern const float128 float128_default_nan;
> +__inline__ float128 float128_default_nan(void);
>  

Unfortunately clang complains about it and eventually it won't link:

  CC    aarch64-softmmu/target-arm/helper-a64.o
In file included from /qemu/target-arm/helper-a64.c:20:
In file included from /qemu/target-arm/cpu.h:37:
In file included from /qemu/include/qemu-common.h:120:
In file included from /qemu/include/qemu/bswap.h:8:
/qemu/include/fpu/softfloat.h:485:20: warning: inline function
'float32_default_nan' is not defined [-Wundefined-inline]
__inline__ float32 float32_default_nan(void);
                   ^
/qemu/target-arm/helper-a64.c:345:19: note: used here
            nan = float32_default_nan();
                  ^
In file included from /qemu/target-arm/helper-a64.c:20:
In file included from /qemu/target-arm/cpu.h:37:
In file included from /qemu/include/qemu-common.h:120:
In file included from /qemu/include/qemu/bswap.h:8:
/qemu/include/fpu/softfloat.h:597:20: warning: inline function
'float64_default_nan' is not defined [-Wundefined-inline]
__inline__ float64 float64_default_nan(void);
                   ^
/qemu/target-arm/helper-a64.c:374:19: note: used here
            nan = float64_default_nan();
                  ^
2 warnings generated.
  CC    aarch64-softmmu/target-arm/gdbstub64.o
  CC    aarch64-softmmu/target-arm/crypto_helper.o
  GEN   trace/generated-helpers.c
  CC    aarch64-softmmu/trace/generated-helpers.o
  LINK  aarch64-softmmu/qemu-system-aarch64
fpu/softfloat.o: In function `commonNaNToFloat64':
/qemu/fpu/softfloat-specialize.h:796: undefined reference to
`float64_default_nan'
/qemu/fpu/softfloat-specialize.h:805: undefined reference to
`float64_default_nan'
fpu/softfloat.o: In function `commonNaNToFloatx80':
/qemu/fpu/softfloat-specialize.h:1007: undefined reference to
`floatx80_default_nan'
/qemu/fpu/softfloat-specialize.h:1014: undefined reference to
`floatx80_default_nan'

  reply	other threads:[~2015-01-30 14:09 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-09  1:54 [Qemu-devel] [PATCH 0/7] MIPS: IEEE 754-2008 features support Maciej W. Rozycki
2014-12-09  1:54 ` [Qemu-devel] [PATCH 1/7] softfloat: Fix sNaN handling in FP conversion operations Maciej W. Rozycki
2015-01-29 14:51   ` Leon Alrae
2015-02-05 16:37   ` Peter Maydell
2015-02-05 16:38     ` Peter Maydell
2015-02-06 14:37     ` Maciej W. Rozycki
2015-02-06 14:45       ` Peter Maydell
2015-02-06 19:35         ` Maciej W. Rozycki
2015-02-08 12:12           ` Maciej W. Rozycki
2014-12-09  1:54 ` [Qemu-devel] [PATCH 2/7] softfloat: Simplify `floatx80ToCommonNaN' function Maciej W. Rozycki
2015-01-28 16:15   ` Leon Alrae
2014-12-09  1:55 ` [Qemu-devel] [PATCH 3/7] softfloat: Convert `*_default_nan' variables into inline functions Maciej W. Rozycki
2014-12-12 19:34   ` [Qemu-devel] [PATCH v2 " Maciej W. Rozycki
2015-01-30 14:09     ` Leon Alrae [this message]
2015-01-30 16:02       ` Maciej W. Rozycki
2015-01-30 16:55         ` Peter Maydell
2015-01-31 11:56           ` Maciej W. Rozycki
2015-01-31 12:52             ` Peter Maydell
2015-01-31 14:58               ` Maciej W. Rozycki
2015-02-03 15:43         ` Richard Henderson
2014-12-09  1:55 ` [Qemu-devel] [PATCH 4/7] softfloat: Add SoftFloat status parameter to `*_nan' functions Maciej W. Rozycki
2014-12-09  1:55 ` [Qemu-devel] [PATCH 5/7] softfloat: Rework `*_is_*_nan' functions Maciej W. Rozycki
2014-12-12 19:35   ` [Qemu-devel] [PATCH v2 " Maciej W. Rozycki
2015-02-05 16:42     ` Peter Maydell
2014-12-09  1:55 ` [Qemu-devel] [PATCH 6/7] softfloat: Add SoftFloat status `nan2008_mode' flag Maciej W. Rozycki
2014-12-12 19:35   ` [Qemu-devel] [PATCH v2 " Maciej W. Rozycki
2015-02-05 17:00     ` Peter Maydell
2015-02-05 19:07       ` Maciej W. Rozycki
2014-12-09  1:56 ` [Qemu-devel] [PATCH 7/7] target-mips: Add IEEE 754-2008 features support Maciej W. Rozycki
2015-02-09 17:10   ` Leon Alrae
2015-02-09 20:55     ` Maciej W. Rozycki
2015-02-10 10:44       ` Leon Alrae
2015-02-10 14:30         ` Maciej W. Rozycki
2015-02-10 17:21           ` Leon Alrae
2015-02-17 13:55   ` Maciej W. Rozycki
2014-12-09  9:20 ` [Qemu-devel] [PATCH 0/7] MIPS: " Peter Maydell
2014-12-09 12:28   ` Maciej W. Rozycki
2014-12-09 12:41     ` Peter Maydell
2014-12-09 18:16       ` Maciej W. Rozycki
2015-01-30 11:59 ` Peter Maydell
2015-01-30 13:47   ` Maciej W. Rozycki
2015-02-03 16:28     ` Thomas Schwinge
2015-02-03 22:30       ` Maciej W. Rozycki

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54CB909F.9010506@imgtec.com \
    --to=leon.alrae@imgtec.com \
    --cc=aurelien@aurel32.net \
    --cc=macro@linux-mips.org \
    --cc=qemu-devel@nongnu.org \
    --cc=thomas@codesourcery.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.