On Tue, Mar 27, 2018 at 12:06:58 +0200, Bastian Koppelmann wrote: > On 03/27/2018 11:56 AM, Bastian Koppelmann wrote: > > When I try to build your tree with gcc version 7.3.1 20180312 (GCC), I get: > > > > CC tricore-softmmu/fpu/softfloat.o > > /home/kbastian/coding/upstream-qemu/qemu-fpu/fpu/softfloat.c:417:19: > > error: conflicting types for ‘canonicalize’ > > static FloatParts canonicalize(FloatParts part, const FloatFmt *parm, > > ^~~~~~~~~~~~ > > In file included from /usr/include/features.h:423:0, > > from /usr/include/bits/libc-header-start.h:33, > > from /usr/include/math.h:27, > > from > > /home/kbastian/coding/upstream-qemu/qemu-fpu/fpu/softfloat.c:85: > > /usr/include/bits/mathcalls.h:385:1: note: previous declaration of > > ‘canonicalize’ was here > > __MATHDECL_1 (int, canonicalize,, (_Mdouble_ *__cx, const _Mdouble_ *__x)); > > > > git bisect points to fb1514a0104df6740e4a60c1b08b5daf173f9737 > > Author: Emilio G. Cota <c...@braap.org> > Date: Sat Mar 17 02:13:59 2018 -0400 > > fpu: introduce hardfloat
Thanks for pointing this out. Turns our glibc >= 2.25 defines canonicalize(), so when including math.h we clash with theirs. > commit eaf5ad0bc4a67bf40999e22db6f583ebc3a806ba > Author: Joseph Myers <jos...@codesourcery.com> > Date: Wed Oct 26 23:14:31 2016 +0000 > > Add canonicalize, canonicalizef, canonicalizel. > > TS 18661-1 defines canonicalize functions to produce a canonical > version of a floating-point representation. This patch implements > these functions for glibc. In v3 I'll rename our canonicalize() to sf_canonicalize(); patch appended (you can apply this message as a patch with git am --scissors). The patch should go before the one that includes math.h, i.e. "fpu: introduce hardfloat". Thanks, Emilio --- 8< --- glibc >= 2.25 defines canonicalize in commit eaf5ad0 (Add canonicalize, canonicalizef, canonicalizel., 2016-10-26). Given that we'll be including libc's math.h soon, prepare for this by prefixing our canonicalize() with sf_ to avoid clashing with the libc's canonicalize(). Signed-off-by: Emilio G. Cota <c...@braap.org> --- fpu/softfloat.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index d0f1f65..901c507 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -414,8 +414,8 @@ static inline float64 float64_pack_raw(FloatParts p) } /* Canonicalize EXP and FRAC, setting CLS. */ -static FloatParts canonicalize(FloatParts part, const FloatFmt *parm, - float_status *status) +static FloatParts sf_canonicalize(FloatParts part, const FloatFmt *parm, + float_status *status) { if (part.exp == parm->exp_max) { if (part.frac == 0) { @@ -585,7 +585,7 @@ static FloatParts round_canonical(FloatParts p, float_status *s, static FloatParts float16_unpack_canonical(float16 f, float_status *s) { - return canonicalize(float16_unpack_raw(f), &float16_params, s); + return sf_canonicalize(float16_unpack_raw(f), &float16_params, s); } static float16 float16_round_pack_canonical(FloatParts p, float_status *s) @@ -603,7 +603,7 @@ static float16 float16_round_pack_canonical(FloatParts p, float_status *s) static FloatParts float32_unpack_canonical(float32 f, float_status *s) { - return canonicalize(float32_unpack_raw(f), &float32_params, s); + return sf_canonicalize(float32_unpack_raw(f), &float32_params, s); } static float32 float32_round_pack_canonical(FloatParts p, float_status *s) @@ -621,7 +621,7 @@ static float32 float32_round_pack_canonical(FloatParts p, float_status *s) static FloatParts float64_unpack_canonical(float64 f, float_status *s) { - return canonicalize(float64_unpack_raw(f), &float64_params, s); + return sf_canonicalize(float64_unpack_raw(f), &float64_params, s); } static float64 float64_round_pack_canonical(FloatParts p, float_status *s) -- 2.7.4