From b5ba4baa516d556dd602382a2f7ece643a2e8049 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Mon, 3 Apr 2023 15:38:32 +0200 Subject: [PATCH] msvcrt: Use the copysign()/copysignf() implementation from the bundled musl library. --- dlls/crtdll/crtdll.spec | 2 +- dlls/msvcr100/msvcr100.spec | 4 ++-- dlls/msvcr110/msvcr110.spec | 4 ++-- dlls/msvcr120/msvcr120.spec | 10 +++++----- dlls/msvcr70/msvcr70.spec | 2 +- dlls/msvcr71/msvcr71.spec | 2 +- dlls/msvcr80/msvcr80.spec | 4 ++-- dlls/msvcr90/msvcr90.spec | 4 ++-- dlls/msvcrt/math.c | 26 -------------------------- dlls/msvcrt/msvcrt.spec | 4 ++-- dlls/msvcrtd/msvcrtd.spec | 2 +- dlls/ucrtbase/ucrtbase.spec | 10 +++++----- 12 files changed, 24 insertions(+), 50 deletions(-) diff --git a/dlls/crtdll/crtdll.spec b/dlls/crtdll/crtdll.spec index d5192ad7569..c66cea5bade 100644 --- a/dlls/crtdll/crtdll.spec +++ b/dlls/crtdll/crtdll.spec @@ -64,7 +64,7 @@ @ extern _commode_dll MSVCRT__commode @ cdecl _control87(long long) @ cdecl _controlfp(long long) -@ cdecl _copysign(double double) +@ cdecl _copysign(double double) copysign @ varargs _cprintf(str) @ extern _cpumode_dll CRTDLL__cpumode_dll @ cdecl _cputs(str) diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index 3e2839b3908..a42fe349cf5 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -733,8 +733,8 @@ @ cdecl _control87(long long) @ cdecl _controlfp(long long) @ cdecl _controlfp_s(ptr long long) -@ cdecl _copysign(double double) -@ cdecl -arch=!i386 _copysignf(float float) +@ cdecl _copysign(double double) copysign +@ cdecl -arch=!i386 _copysignf(float float) copysignf @ varargs _cprintf(str) @ stub _cprintf_l @ stub _cprintf_p diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index c23293ea658..2bccd8c6fe9 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -1081,8 +1081,8 @@ @ cdecl _control87(long long) @ cdecl _controlfp(long long) @ cdecl _controlfp_s(ptr long long) -@ cdecl _copysign(double double) -@ cdecl -arch=!i386 _copysignf(float float) +@ cdecl _copysign(double double) copysign +@ cdecl -arch=!i386 _copysignf(float float) copysignf @ varargs _cprintf(str) @ stub _cprintf_l @ stub _cprintf_p diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index 6eac1937227..ed0f69b49bc 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -1073,8 +1073,8 @@ @ cdecl _control87(long long) @ cdecl _controlfp(long long) @ cdecl _controlfp_s(ptr long long) -@ cdecl _copysign(double double) -@ cdecl _copysignf(float float) +@ cdecl _copysign(double double) copysign +@ cdecl _copysignf(float float) copysignf @ varargs _cprintf(str) @ stub _cprintf_l @ stub _cprintf_p @@ -2091,9 +2091,9 @@ @ stub conj @ stub conjf @ stub conjl -@ cdecl copysign(double double) _copysign -@ cdecl copysignf(float float) _copysignf -@ cdecl copysignl(double double) _copysign +@ cdecl copysign(double double) +@ cdecl copysignf(float float) +@ cdecl copysignl(double double) copysign @ cdecl cos(double) @ cdecl -arch=!i386 cosf(float) @ cdecl cosh(double) diff --git a/dlls/msvcr70/msvcr70.spec b/dlls/msvcr70/msvcr70.spec index 60fa9ed8693..cb3a92cf395 100644 --- a/dlls/msvcr70/msvcr70.spec +++ b/dlls/msvcr70/msvcr70.spec @@ -258,7 +258,7 @@ @ extern _commode MSVCRT__commode @ cdecl _control87(long long) @ cdecl _controlfp(long long) -@ cdecl _copysign(double double) +@ cdecl _copysign(double double) copysign @ varargs _cprintf(str) @ cdecl _cputs(str) @ cdecl _cputws(wstr) diff --git a/dlls/msvcr71/msvcr71.spec b/dlls/msvcr71/msvcr71.spec index 1aacd768d46..a559b5cc376 100644 --- a/dlls/msvcr71/msvcr71.spec +++ b/dlls/msvcr71/msvcr71.spec @@ -253,7 +253,7 @@ @ extern _commode MSVCRT__commode @ cdecl _control87(long long) @ cdecl _controlfp(long long) -@ cdecl _copysign(double double) +@ cdecl _copysign(double double) copysign @ varargs _cprintf(str) @ cdecl _cputs(str) @ cdecl _cputws(wstr) diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index cf885153e7a..06d0bdf82cd 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -397,8 +397,8 @@ @ cdecl _control87(long long) @ cdecl _controlfp(long long) @ cdecl _controlfp_s(ptr long long) -@ cdecl _copysign(double double) -@ cdecl -arch=!i386 _copysignf(float float) +@ cdecl _copysign(double double) copysign +@ cdecl -arch=!i386 _copysignf(float float) copysignf @ varargs _cprintf(str) @ stub _cprintf_l @ stub _cprintf_p diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index 87b31d1a048..d020de98a02 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -380,8 +380,8 @@ @ cdecl _control87(long long) @ cdecl _controlfp(long long) @ cdecl _controlfp_s(ptr long long) -@ cdecl _copysign(double double) -@ cdecl -arch=!i386 _copysignf(float float) +@ cdecl _copysign(double double) copysign +@ cdecl -arch=!i386 _copysignf(float float) copysignf @ varargs _cprintf(str) @ stub _cprintf_l @ stub _cprintf_p diff --git a/dlls/msvcrt/math.c b/dlls/msvcrt/math.c index 6dcd9b5ec5f..c0d9baab361 100644 --- a/dlls/msvcrt/math.c +++ b/dlls/msvcrt/math.c @@ -216,19 +216,6 @@ float CDECL _chgsignf( float num ) return u.f; } -/********************************************************************* - * _copysignf (MSVCRT.@) - * - * Copied from musl: src/math/copysignf.c - */ -float CDECL _copysignf( float x, float y ) -{ - union { float f; UINT32 i; } ux = { x }, uy = { y }; - ux.i &= 0x7fffffff; - ux.i |= uy.i & 0x80000000; - return ux.f; -} - /********************************************************************* * _nextafterf (MSVCRT.@) * @@ -5723,19 +5710,6 @@ int CDECL fesetround(int round_mode) #endif /* _MSVCR_VER>=120 */ -/********************************************************************* - * _copysign (MSVCRT.@) - * - * Copied from musl: src/math/copysign.c - */ -double CDECL _copysign( double x, double y ) -{ - union { double f; UINT64 i; } ux = { x }, uy = { y }; - ux.i &= ~0ull >> 1; - ux.i |= uy.i & 1ull << 63; - return ux.f; -} - /********************************************************************* * _finite (MSVCRT.@) */ diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index 6dcb0767c31..43259d7abad 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -367,8 +367,8 @@ @ cdecl _control87(long long) @ cdecl _controlfp(long long) @ cdecl _controlfp_s(ptr long long) -@ cdecl _copysign(double double) -@ cdecl -arch=!i386 _copysignf(float float) +@ cdecl _copysign(double double) copysign +@ cdecl -arch=!i386 _copysignf(float float) copysignf @ varargs _cprintf(str) # stub _cprintf_l(str ptr) # stub _cprintf_p(str) diff --git a/dlls/msvcrtd/msvcrtd.spec b/dlls/msvcrtd/msvcrtd.spec index 33696eba829..5cb09d92c74 100644 --- a/dlls/msvcrtd/msvcrtd.spec +++ b/dlls/msvcrtd/msvcrtd.spec @@ -242,7 +242,7 @@ @ extern _commode MSVCRT__commode @ cdecl _control87(long long) @ cdecl _controlfp(long long) -@ cdecl _copysign(double double) +@ cdecl _copysign(double double) copysign @ varargs _cprintf(str) @ cdecl _cputs(str) @ cdecl _creat(str long) diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index bc9dd2bcbc6..87a266198bd 100644 --- a/dlls/ucrtbase/ucrtbase.spec +++ b/dlls/ucrtbase/ucrtbase.spec @@ -237,8 +237,8 @@ @ cdecl _control87(long long) @ cdecl _controlfp(long long) @ cdecl _controlfp_s(ptr long long) -@ cdecl _copysign(double double) -@ cdecl _copysignf(float float) +@ cdecl _copysign(double double) copysign +@ cdecl _copysignf(float float) copysignf @ cdecl _cputs(str) @ cdecl _cputws(wstr) @ cdecl _creat(str long) @@ -2236,9 +2236,9 @@ @ stub conj @ stub conjf @ stub conjl -@ cdecl copysign(double double) _copysign -@ cdecl copysignf(float float) _copysignf -@ cdecl copysignl(double double) _copysign +@ cdecl copysign(double double) +@ cdecl copysignf(float float) +@ cdecl copysignl(double double) copysign @ cdecl cos(double) @ cdecl -arch=!i386 cosf(float) @ cdecl cosh(double)