summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/config/alpha/linux.h3
-rw-r--r--gcc/config/linux.h3
-rw-r--r--gcc/config/rs6000/linux.h4
-rw-r--r--gcc/config/rs6000/linux64.h4
-rw-r--r--gcc/config/sparc/linux.h3
-rw-r--r--gcc/config/sparc/linux64.h3
-rw-r--r--gcc/defaults.h6
-rw-r--r--gcc/doc/tm.texi12
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