msun/x86: convert rest of the extern inline fenv functions to proper linkage

namely
	fegetexceptflag(3)
	fetestexcept(3)
	fesetround(3)
	fegetround(3)
	fesetenv(3)
Same as it was done in f39754d51b for feclearexcept(3).

PR:	277958
Reviewed by:	dim
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Differential revision:	https://reviews.freebsd.org/D56139
This commit is contained in:
Konstantin Belousov
2026-03-29 00:36:55 +02:00
parent 7cfffe25da
commit 5bc64b7d41
3 changed files with 74 additions and 19 deletions
+27 -5
View File
@@ -52,7 +52,11 @@ int
return (__feclearexcept_int(excepts));
}
extern inline int fegetexceptflag(fexcept_t *__flagp, int __excepts);
int
(fegetexceptflag)(fexcept_t *flagp, int excepts)
{
return (__fegetexceptflag_int(flagp, excepts));
}
int
fesetexceptflag(const fexcept_t *flagp, int excepts)
@@ -82,9 +86,23 @@ feraiseexcept(int excepts)
return (0);
}
extern inline int fetestexcept(int __excepts);
extern inline int fegetround(void);
extern inline int fesetround(int __round);
int
(fetestexcept)(int excepts)
{
return (__fetestexcept_int(excepts));
}
int
(fegetround)(void)
{
return (__fegetround_int());
}
int
(fesetround)(int round)
{
return (__fesetround_int(round));
}
int
fegetenv(fenv_t *envp)
@@ -115,7 +133,11 @@ feholdexcept(fenv_t *envp)
return (0);
}
extern inline int fesetenv(const fenv_t *__envp);
int
(fesetenv)(const fenv_t *envp)
{
return (__fesetenv_int(envp));
}
int
feupdateenv(const fenv_t *envp)
+27 -5
View File
@@ -94,7 +94,11 @@ int
return (__feclearexcept_int(excepts));
}
extern inline int fegetexceptflag(fexcept_t *__flagp, int __excepts);
int
(fegetexceptflag)(fexcept_t *flagp, int excepts)
{
return (__fegetexceptflag_int(flagp, excepts));
}
int
fesetexceptflag(const fexcept_t *flagp, int excepts)
@@ -127,9 +131,23 @@ feraiseexcept(int excepts)
return (0);
}
extern inline int fetestexcept(int __excepts);
extern inline int fegetround(void);
extern inline int fesetround(int __round);
int
(fetestexcept)(int excepts)
{
return (__fetestexcept_int(excepts));
}
int
(fegetround)(void)
{
return (__fegetround_int());
}
int
(fesetround)(int round)
{
return (__fesetround_int(round));
}
int
fegetenv(fenv_t *envp)
@@ -166,7 +184,11 @@ feholdexcept(fenv_t *envp)
return (0);
}
extern inline int fesetenv(const fenv_t *__envp);
int
(fesetenv)(const fenv_t *envp)
{
return (__fesetenv_int(envp));
}
int
feupdateenv(const fenv_t *envp)
+20 -9
View File
@@ -108,7 +108,7 @@ int feraiseexcept(int __excepts);
int feupdateenv(const fenv_t *__envp);
__fenv_static inline int
fegetround(void)
__fegetround_int(void)
{
__uint16_t __control;
@@ -144,7 +144,18 @@ fegetexcept(void)
#endif /* __BSD_VISIBLE */
int feclearexcept(int);
int fegetexceptflag(fexcept_t *, int);
int fetestexcept(int);
int fesetround(int);
int fegetround(void);
int fesetenv(const fenv_t *);
#define feclearexcept(a) __feclearexcept_int(a)
#define fegetexceptflag(e, a) __fegetexceptflag_int(e, a)
#define fetestexcept(a) __fetestexcept_int(a)
#define fesetround(a) __fesetround_int(a)
#define fegetround() __fegetround_int()
#define fesetenv(a) __fesetenv_int(a)
#ifdef __i386__
@@ -188,7 +199,7 @@ __feclearexcept_int(int __excepts)
}
__fenv_static inline int
fegetexceptflag(fexcept_t *__flagp, int __excepts)
__fegetexceptflag_int(fexcept_t *__flagp, int __excepts)
{
__uint32_t __mxcsr;
__uint16_t __status;
@@ -203,7 +214,7 @@ fegetexceptflag(fexcept_t *__flagp, int __excepts)
}
__fenv_static inline int
fetestexcept(int __excepts)
__fetestexcept_int(int __excepts)
{
__uint32_t __mxcsr;
__uint16_t __status;
@@ -217,7 +228,7 @@ fetestexcept(int __excepts)
}
__fenv_static inline int
fesetround(int __round)
__fesetround_int(int __round)
{
__uint32_t __mxcsr;
__uint16_t __control;
@@ -241,7 +252,7 @@ fesetround(int __round)
}
__fenv_static inline int
fesetenv(const fenv_t *__envp)
__fesetenv_int(const fenv_t *__envp)
{
fenv_t __env = *__envp;
__uint32_t __mxcsr;
@@ -283,7 +294,7 @@ __feclearexcept_int(int __excepts)
}
__fenv_static inline int
fegetexceptflag(fexcept_t *__flagp, int __excepts)
__fegetexceptflag_int(fexcept_t *__flagp, int __excepts)
{
__uint32_t __mxcsr;
__uint16_t __status;
@@ -295,7 +306,7 @@ fegetexceptflag(fexcept_t *__flagp, int __excepts)
}
__fenv_static inline int
fetestexcept(int __excepts)
__fetestexcept_int(int __excepts)
{
__uint32_t __mxcsr;
__uint16_t __status;
@@ -306,7 +317,7 @@ fetestexcept(int __excepts)
}
__fenv_static inline int
fesetround(int __round)
__fesetround_int(int __round)
{
__uint32_t __mxcsr;
__uint16_t __control;
@@ -328,7 +339,7 @@ fesetround(int __round)
}
__fenv_static inline int
fesetenv(const fenv_t *__envp)
__fesetenv_int(const fenv_t *__envp)
{
/*