diff options
-rw-r--r-- | gcc/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/config/alpha/linux.h | 3 | ||||
-rw-r--r-- | gcc/config/linux.h | 3 | ||||
-rw-r--r-- | gcc/config/rs6000/linux.h | 4 | ||||
-rw-r--r-- | gcc/config/rs6000/linux64.h | 4 | ||||
-rw-r--r-- | gcc/config/sparc/linux.h | 3 | ||||
-rw-r--r-- | gcc/config/sparc/linux64.h | 3 | ||||
-rw-r--r-- | gcc/defaults.h | 6 | ||||
-rw-r--r-- | gcc/doc/tm.texi | 12 |
9 files changed, 49 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1843e84d239..bd50a12f93f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2007-01-19 Richard Guenther <rguenther@suse.de> + + * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro. + * defaults.h (TARGET_HAS_SINCOS): Default to off. + * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc. + * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise. + * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise. + * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise. + * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise. + * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise. + 2007-01-19 Uros Bizjak <ubizjak@gmail.com> * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387): diff --git a/gcc/config/alpha/linux.h b/gcc/config/alpha/linux.h index dcd3c6597c4..a496f40aa5e 100644 --- a/gcc/config/alpha/linux.h +++ b/gcc/config/alpha/linux.h @@ -66,6 +66,9 @@ Boston, MA 02110-1301, USA. */ runtime library. */ #define TARGET_C99_FUNCTIONS (OPTION_GLIBC) +/* Whether we have sincos that follows the GNU extension. */ +#define TARGET_HAS_SINCOS (OPTION_GLIBC) + #define TARGET_POSIX_IO #define LINK_GCC_C_SEQUENCE_SPEC \ diff --git a/gcc/config/linux.h b/gcc/config/linux.h index 59e3e8538f9..09078374340 100644 --- a/gcc/config/linux.h +++ b/gcc/config/linux.h @@ -126,4 +126,7 @@ Boston, MA 02110-1301, USA. */ is present in the runtime library. */ #define TARGET_C99_FUNCTIONS (OPTION_GLIBC) +/* Whether we have sincos that follows the GNU extension. */ +#define TARGET_HAS_SINCOS (OPTION_GLIBC) + #define TARGET_POSIX_IO diff --git a/gcc/config/rs6000/linux.h b/gcc/config/rs6000/linux.h index 3df356fca1a..c6a6fda0068 100644 --- a/gcc/config/rs6000/linux.h +++ b/gcc/config/rs6000/linux.h @@ -35,6 +35,10 @@ #undef TARGET_C99_FUNCTIONS #define TARGET_C99_FUNCTIONS (OPTION_GLIBC) +/* Whether we have sincos that follows the GNU extension. */ +#undef TARGET_HAS_SINCOS +#define TARGET_HAS_SINCOS (OPTION_GLIBC) + #undef TARGET_OS_CPP_BUILTINS #define TARGET_OS_CPP_BUILTINS() \ do \ diff --git a/gcc/config/rs6000/linux64.h b/gcc/config/rs6000/linux64.h index 5c62a1d133b..5b954a9535d 100644 --- a/gcc/config/rs6000/linux64.h +++ b/gcc/config/rs6000/linux64.h @@ -285,6 +285,10 @@ extern int dot_symbols; #undef TARGET_C99_FUNCTIONS #define TARGET_C99_FUNCTIONS (OPTION_GLIBC) +/* Whether we have sincos that follows the GNU extension. */ +#undef TARGET_HAS_SINCOS +#define TARGET_HAS_SINCOS (OPTION_GLIBC) + #undef TARGET_OS_CPP_BUILTINS #define TARGET_OS_CPP_BUILTINS() \ do \ diff --git a/gcc/config/sparc/linux.h b/gcc/config/sparc/linux.h index 5af67a6a34d..7c50d3c6139 100644 --- a/gcc/config/sparc/linux.h +++ b/gcc/config/sparc/linux.h @@ -215,6 +215,9 @@ do { \ runtime library. */ #define TARGET_C99_FUNCTIONS (OPTION_GLIBC) +/* Whether we have sincos that follows the GNU extension. */ +#define TARGET_HAS_SINCOS (OPTION_GLIBC) + #define TARGET_POSIX_IO #undef LINK_GCC_C_SEQUENCE_SPEC diff --git a/gcc/config/sparc/linux64.h b/gcc/config/sparc/linux64.h index b0ddf4b3d3b..60bda622cc7 100644 --- a/gcc/config/sparc/linux64.h +++ b/gcc/config/sparc/linux64.h @@ -347,6 +347,9 @@ do { \ runtime library. */ #define TARGET_C99_FUNCTIONS (OPTION_GLIBC) +/* Whether we have sincos that follows the GNU extension. */ +#define TARGET_HAS_SINCOS (OPTION_GLIBC) + #define TARGET_POSIX_IO #undef LINK_GCC_C_SEQUENCE_SPEC diff --git a/gcc/defaults.h b/gcc/defaults.h index 6af5f17bd7d..b17d59e1940 100644 --- a/gcc/defaults.h +++ b/gcc/defaults.h @@ -796,6 +796,12 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA #define TARGET_C99_FUNCTIONS 0 #endif +/* Determine whether the target runtime library has + a sincos implementation following the GNU extension. */ +#ifndef TARGET_HAS_SINCOS +#define TARGET_HAS_SINCOS 0 +#endif + /* Indicate that CLZ and CTZ are undefined at zero. */ #ifndef CLZ_DEFINED_VALUE_AT_ZERO #define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) 0 diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index ad707798a8f..33905757a50 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -5061,6 +5061,18 @@ number of existing systems lacks support for these functions in the runtime so they needs this macro to be redefined to 0. @end defmac +@cindex sincos math function, implicit usage +@defmac TARGET_HAS_SINCOS +When this macro is nonzero, GCC will implicitly optimize calls to @code{sin} +and @code{cos} with the same argument to a call to @code{sincos}. The +default is zero. The target has to provide the following functions: +@smallexample +void sincos(double x, double *sin, double *cos); +void sincosf(float x, float *sin, float *cos); +void sincosl(long double x, long double *sin, long double *cos); +@end smallexample +@end defmac + @defmac NEXT_OBJC_RUNTIME Define this macro to generate code for Objective-C message sending using the calling convention of the NeXT system. This calling convention |