* include/_mingw.h (__MINGW_GNUC_PREREQ): Define. Use to
guard __MINGW_ATTRIB macro definitions. * include/math.h (logb[fl]): Don't define inlines for GCC-4.0+ && __FAST_MATH__. (rint[fl], lrint[fl], llrint[fl]); Likewise. Clean up line-continuation backslashes.
This commit is contained in:
parent
7a9b2d82ec
commit
dcd6cb4308
|
@ -1,9 +1,18 @@
|
||||||
2005-06-06 Danny Smith <dannysmith@users.sourceforge
|
2005-06-16 Danny Smith <dannysmith@users.sourceforge.net>
|
||||||
|
|
||||||
|
* include/_mingw.h (__MINGW_GNUC_PREREQ): Define. Use to
|
||||||
|
guard __MINGW_ATTRIB macro definitions.
|
||||||
|
* include/math.h (logb[fl]): Don't define inlines for
|
||||||
|
GCC-4.0+ && __FAST_MATH__.
|
||||||
|
(rint[fl], lrint[fl], llrint[fl]); Likewise. Clean up
|
||||||
|
line-continuation backslashes.
|
||||||
|
|
||||||
|
2005-06-06 Danny Smith <dannysmith@users.sourceforge.net>
|
||||||
|
|
||||||
* include/_mingw.h (__MINGW_ATTRIBUTE_NONNULL): Fix typo
|
* include/_mingw.h (__MINGW_ATTRIBUTE_NONNULL): Fix typo
|
||||||
in GNUC version guard.
|
in GNUC version guard.
|
||||||
|
|
||||||
2005-05-20 Danny Smith <dannysmith@users.sourceforge
|
2005-05-20 Danny Smith <dannysmith@users.sourceforge.net>
|
||||||
|
|
||||||
* crt1.c (_gnu_exception_handler): Handle illegal instruction
|
* crt1.c (_gnu_exception_handler): Handle illegal instruction
|
||||||
OS exception as a signal if user has defined a SIGILL handler.
|
OS exception as a signal if user has defined a SIGILL handler.
|
||||||
|
@ -15,7 +24,7 @@
|
||||||
* mingwex/math/nextafterl.c: Add nexttowardl alias.
|
* mingwex/math/nextafterl.c: Add nexttowardl alias.
|
||||||
* mingwex/Makefile.in (MATH_DISTFILES): Add nexttoward.c,
|
* mingwex/Makefile.in (MATH_DISTFILES): Add nexttoward.c,
|
||||||
mexttowardf.c,
|
mexttowardf.c,
|
||||||
(MATH_OBJS): Add nexttoward.o, mexttowardf.o,
|
(MATH_OBJS): Add nexttoward.o, nexttowardf.o,
|
||||||
* include/math.h (nexttoward, nextowardf, nexttowardl): Add
|
* include/math.h (nexttoward, nextowardf, nexttowardl): Add
|
||||||
prototypes.
|
prototypes.
|
||||||
|
|
||||||
|
|
|
@ -110,6 +110,14 @@
|
||||||
#define __CRT_INLINE extern __inline__
|
#define __CRT_INLINE extern __inline__
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined (__GNUC__) && defined (__GNUC_MINOR__)
|
||||||
|
#define __MINGW_GNUC_PREREQ(major, minor) \
|
||||||
|
(__GNUC__ > (major) \
|
||||||
|
|| (__GNUC__ == (major) && __GNUC_MINOR__ >= (minor)))
|
||||||
|
#else
|
||||||
|
#define __MINGW_GNUC_PREREQ(major, minor) 0
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
# define __UNUSED_PARAM(x)
|
# define __UNUSED_PARAM(x)
|
||||||
#else
|
#else
|
||||||
|
@ -128,7 +136,7 @@
|
||||||
#define __MINGW_ATTRIB_CONST
|
#define __MINGW_ATTRIB_CONST
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ( __GNUC__ >= 3)
|
#if __MINGW_GNUC_PREREQ (3, 0)
|
||||||
#define __MINGW_ATTRIB_MALLOC __attribute__ ((__malloc__))
|
#define __MINGW_ATTRIB_MALLOC __attribute__ ((__malloc__))
|
||||||
#define __MINGW_ATTRIB_PURE __attribute__ ((__pure__))
|
#define __MINGW_ATTRIB_PURE __attribute__ ((__pure__))
|
||||||
#else
|
#else
|
||||||
|
@ -139,7 +147,7 @@
|
||||||
/* Attribute `nonnull' was valid as of gcc 3.3. We don't use GCC's
|
/* Attribute `nonnull' was valid as of gcc 3.3. We don't use GCC's
|
||||||
variadiac macro facility, because variadic macros cause syntax
|
variadiac macro facility, because variadic macros cause syntax
|
||||||
errors with --traditional-cpp. */
|
errors with --traditional-cpp. */
|
||||||
#if (__GNUC__ > 3 ||( __GNUC__ == 3 && __GNUC_MINOR__ >= 3))
|
#if __MINGW_GNUC_PREREQ (3, 3)
|
||||||
#define __MINGW_ATTRIB_NONNULL(arg) __attribute__ ((__nonnull__ (arg)))
|
#define __MINGW_ATTRIB_NONNULL(arg) __attribute__ ((__nonnull__ (arg)))
|
||||||
#else
|
#else
|
||||||
#define __MINGW_ATTRIB_NONNULL(arg)
|
#define __MINGW_ATTRIB_NONNULL(arg)
|
||||||
|
|
|
@ -500,6 +500,9 @@ extern double __cdecl logb (double);
|
||||||
extern float __cdecl logbf (float);
|
extern float __cdecl logbf (float);
|
||||||
extern long double __cdecl logbl (long double);
|
extern long double __cdecl logbl (long double);
|
||||||
|
|
||||||
|
/* Inline versions. GCC-4.0+ can do a better fast-math optimization
|
||||||
|
with __builtins. */
|
||||||
|
#if !(__MINGW_GNUC_PREREQ (4, 0) && defined __FAST_MATH__ )
|
||||||
__CRT_INLINE double __cdecl logb (double x)
|
__CRT_INLINE double __cdecl logb (double x)
|
||||||
{
|
{
|
||||||
double res;
|
double res;
|
||||||
|
@ -523,6 +526,7 @@ __CRT_INLINE long double __cdecl logbl (long double x)
|
||||||
"fstp %%st" : "=t" (res) : "0" (x));
|
"fstp %%st" : "=t" (res) : "0" (x));
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
#endif /* !defined __FAST_MATH__ || !__MINGW_GNUC_PREREQ (4, 0) */
|
||||||
|
|
||||||
/* 7.12.6.12 Double in C89 */
|
/* 7.12.6.12 Double in C89 */
|
||||||
extern float __cdecl modff (float, float*);
|
extern float __cdecl modff (float, float*);
|
||||||
|
@ -597,6 +601,22 @@ extern long double __cdecl nearbyintl (long double);
|
||||||
|
|
||||||
/* 7.12.9.4 */
|
/* 7.12.9.4 */
|
||||||
/* round, using fpu control word settings */
|
/* round, using fpu control word settings */
|
||||||
|
extern double __cdecl rint (double);
|
||||||
|
extern float __cdecl rintf (float);
|
||||||
|
extern long double __cdecl rintl (long double);
|
||||||
|
|
||||||
|
/* 7.12.9.5 */
|
||||||
|
extern long __cdecl lrint (double);
|
||||||
|
extern long __cdecl lrintf (float);
|
||||||
|
extern long __cdecl lrintl (long double);
|
||||||
|
|
||||||
|
extern long long __cdecl llrint (double);
|
||||||
|
extern long long __cdecl llrintf (float);
|
||||||
|
extern long long __cdecl llrintl (long double);
|
||||||
|
|
||||||
|
/* Inline versions of above.
|
||||||
|
GCC 4.0+ can do a better fast-math job with __builtins. */
|
||||||
|
#if !(__MINGW_GNUC_PREREQ (4, 0) && defined __FAST_MATH__ )
|
||||||
__CRT_INLINE double __cdecl rint (double x)
|
__CRT_INLINE double __cdecl rint (double x)
|
||||||
{
|
{
|
||||||
double retval;
|
double retval;
|
||||||
|
@ -618,54 +638,54 @@ __CRT_INLINE long double __cdecl rintl (long double x)
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 7.12.9.5 */
|
|
||||||
__CRT_INLINE long __cdecl lrint (double x)
|
__CRT_INLINE long __cdecl lrint (double x)
|
||||||
{
|
{
|
||||||
long retval;
|
long retval;
|
||||||
__asm__ __volatile__ \
|
__asm__ __volatile__
|
||||||
("fistpl %0" : "=m" (retval) : "t" (x) : "st"); \
|
("fistpl %0" : "=m" (retval) : "t" (x) : "st");
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
__CRT_INLINE long __cdecl lrintf (float x)
|
__CRT_INLINE long __cdecl lrintf (float x)
|
||||||
{
|
{
|
||||||
long retval;
|
long retval;
|
||||||
__asm__ __volatile__ \
|
__asm__ __volatile__
|
||||||
("fistpl %0" : "=m" (retval) : "t" (x) : "st"); \
|
("fistpl %0" : "=m" (retval) : "t" (x) : "st");
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
__CRT_INLINE long __cdecl lrintl (long double x)
|
__CRT_INLINE long __cdecl lrintl (long double x)
|
||||||
{
|
{
|
||||||
long retval;
|
long retval;
|
||||||
__asm__ __volatile__ \
|
__asm__ __volatile__
|
||||||
("fistpl %0" : "=m" (retval) : "t" (x) : "st"); \
|
("fistpl %0" : "=m" (retval) : "t" (x) : "st");
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
__CRT_INLINE long long __cdecl llrint (double x)
|
__CRT_INLINE long long __cdecl llrint (double x)
|
||||||
{
|
{
|
||||||
long long retval;
|
long long retval;
|
||||||
__asm__ __volatile__ \
|
__asm__ __volatile__
|
||||||
("fistpll %0" : "=m" (retval) : "t" (x) : "st"); \
|
("fistpll %0" : "=m" (retval) : "t" (x) : "st");
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
__CRT_INLINE long long __cdecl llrintf (float x)
|
__CRT_INLINE long long __cdecl llrintf (float x)
|
||||||
{
|
{
|
||||||
long long retval;
|
long long retval;
|
||||||
__asm__ __volatile__ \
|
__asm__ __volatile__
|
||||||
("fistpll %0" : "=m" (retval) : "t" (x) : "st"); \
|
("fistpll %0" : "=m" (retval) : "t" (x) : "st");
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
__CRT_INLINE long long __cdecl llrintl (long double x)
|
__CRT_INLINE long long __cdecl llrintl (long double x)
|
||||||
{
|
{
|
||||||
long long retval;
|
long long retval;
|
||||||
__asm__ __volatile__ \
|
__asm__ __volatile__
|
||||||
("fistpll %0" : "=m" (retval) : "t" (x) : "st"); \
|
("fistpll %0" : "=m" (retval) : "t" (x) : "st");
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
#endif /* !__FAST_MATH__ || !__MINGW_GNUC_PREREQ (4,0) */
|
||||||
|
|
||||||
/* 7.12.9.6 */
|
/* 7.12.9.6 */
|
||||||
/* round away from zero, regardless of fpu control word settings */
|
/* round away from zero, regardless of fpu control word settings */
|
||||||
|
|
Loading…
Reference in New Issue