Index: gcc.target/i386/conversion.c =================================================================== --- gcc.target/i386/conversion.c (revision 0) +++ gcc.target/i386/conversion.c (revision 0) @@ -0,0 +1,54 @@ +/* Check that conversion functions don't leak into global namespace. */ + +/* { dg-do link } */ +/* { dg-options "-ffast-math" } */ + +int ifloor (double a) { return __builtin_ifloor (a); } +#ifdef HAVE_C99_RUNTIME +int ifloorf (float a) { return __builtin_ifloorf (a); } +int ifloorl (long double a) { return __builtin_ifloorl (a); } +#endif + +long lfloor (double a) { return __builtin_lfloor (a); } +#ifdef HAVE_C99_RUNTIME +long lfloorf (float a) { return __builtin_lfloorf (a); } +long lfloorl (long double a) { return __builtin_lfloorl (a); } +#endif + +long long llfloor (double a) { return __builtin_llfloor (a); } +#ifdef HAVE_C99_RUNTIME +long long llfloorf (float a) { return __builtin_llfloorf (a); } +long long llfloorl (long double a) { return __builtin_llfloorl (a); } +#endif + +int iceil (double a) { return __builtin_iceil (a); } +#ifdef HAVE_C99_RUNTIME +int iceilf (float a) { return __builtin_iceilf (a); } +int iceill (long double a) { return __builtin_iceill (a); } +#endif + +long lceil (double a) { return __builtin_lceil (a); } +#ifdef HAVE_C99_RUNTIME +long lceilf (float a) { return __builtin_lceilf (a); } +long lceill (long double a) { return __builtin_lceill (a); } +#endif + +long long llceil (double a) { return __builtin_llceil (a); } +#ifdef HAVE_C99_RUNTIME +long long llceilf (float a) { return __builtin_llceilf (a); } +long long llceill (long double a) { return __builtin_llceill (a); } +#endif + +int iround (double a) { return __builtin_iround (a); } +#ifdef HAVE_C99_RUNTIME +int iroundf (float a) { return __builtin_iroundf (a); } +int iroundl (long double a) { return __builtin_iroundl (a); } +#endif + +int irint (double a) { return __builtin_irint (a); } +#ifdef HAVE_C99_RUNTIME +int irintf (float a) { return __builtin_irintf (a); } +int irintl (long double a) { return __builtin_irintl (a); } +#endif + +int main () { return 0; } Index: gcc.dg/builtins-67.c =================================================================== --- gcc.dg/builtins-67.c (revision 0) +++ gcc.dg/builtins-67.c (revision 0) @@ -0,0 +1,71 @@ +/* Check that conversion functions link correctly with -ffast-math. */ + +/* { dg-do link } */ +/* { dg-options "-ffast-math -lm" } */ + + +double floor (double); +float floorf (float); +long double floorl (long double); + +double ceil (double); +float ceilf (float); +long double ceill (long double); + +double round (double); +float roundf (float); +long double roundl (long double); + +double rint (double); +float rintf (float); +long double rintl (long double); + +int ifloor (double a) { return (int) floor (a); } +#ifdef HAVE_C99_RUNTIME +int ifloorf (float a) { return (int) floorf (a); } +int ifloorl (long double a) { return (int) floorl (a); } +#endif + +long lfloor (double a) { return (long) floor (a); } +#ifdef HAVE_C99_RUNTIME +long lfloorf (float a) { return (long) floorf (a); } +long lfloorl (long double a) { return (long) floorl (a); } +#endif + +long long llfloor (double a) { return (long long) floor (a); } +#ifdef HAVE_C99_RUNTIME +long long llfloorf (float a) { return (long long) floorf (a); } +long long llfloorl (long double a) { return (long long) floorl (a); } +#endif + +int iceil (double a) { return (int) ceil (a); } +#ifdef HAVE_C99_RUNTIME +int iceilf (float a) { return (int) ceilf (a); } +int iceill (long double a) { return (int) ceill (a); } +#endif + +long lceil (double a) { return (long) ceil (a); } +#ifdef HAVE_C99_RUNTIME +long lceilf (float a) { return (long) ceilf (a); } +long lceill (long double a) { return (long) ceill (a); } +#endif + +long long llceil (double a) { return (long long) ceil (a); } +#ifdef HAVE_C99_RUNTIME +long long llceilf (float a) { return (long long) ceilf (a); } +long long llceill (long double a) { return (long long) ceill (a); } +#endif + +int iround (double a) { return (int) round (a); } +#ifdef HAVE_C99_RUNTIME +int iroundf (float a) { return (int) roundf (a); } +int iroundl (long double a) { return (int) roundl (a); } +#endif + +int irint (double a) { return (int) rint (a); } +#ifdef HAVE_C99_RUNTIME +int irintf (float a) { return (int) rintf (a); } +int irintl (long double a) { return (int) rintl (a); } +#endif + +int main () { return 0; }