aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKai Tietz <kai.tietz@onevision.com>2008-04-25 23:25:26 +0000
committerKai Tietz <ktietz@gcc.gnu.org>2008-04-26 01:25:26 +0200
commit8196a02c5a633e7202f069eb5bfa58978957a823 (patch)
tree2552f862fb9d6690b39263df9be7913780be6b18
parente3b5732b21547a1473879859cf26435f7702be4a (diff)
downloadgcc-8196a02c5a633e7202f069eb5bfa58978957a823.zip
gcc-8196a02c5a633e7202f069eb5bfa58978957a823.tar.gz
gcc-8196a02c5a633e7202f069eb5bfa58978957a823.tar.bz2
mingw32.h (SUBTARGET_INIT_BUILTINS): New.
2008-04-25 Kai Tietz <kai.tietz@onevision.com> * config/i386/mingw32.h (SUBTARGET_INIT_BUILTINS): New. * config/i386/i386.c (ix86_init_builtins): Use of SUBTARGET_INIT_BUILTINS. From-SVN: r134683
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/i386/i386.c4
-rw-r--r--gcc/config/i386/mingw32.h16
3 files changed, 26 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 374615b..1e546d5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2008-04-25 Kai Tietz <kai.tietz@onevision.com>
+
+ * config/i386/mingw32.h (SUBTARGET_INIT_BUILTINS): New.
+ * config/i386/i386.c (ix86_init_builtins): Use of
+ SUBTARGET_INIT_BUILTINS.
+
2008-04-25 Jan Hubicka <jh@suse.cz>
PR testsuite/35843
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 2df9683..1e9776a 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -19806,6 +19806,10 @@ ix86_init_builtins (void)
{
if (TARGET_MMX)
ix86_init_mmx_sse_builtins ();
+
+#ifdef SUBTARGET_INIT_BUILTINS
+ SUBTARGET_INIT_BUILTINS;
+#endif
}
/* Errors in the source file can cause expand_expr to return const0_rtx
diff --git a/gcc/config/i386/mingw32.h b/gcc/config/i386/mingw32.h
index 200569e..19b57db 100644
--- a/gcc/config/i386/mingw32.h
+++ b/gcc/config/i386/mingw32.h
@@ -180,6 +180,22 @@ __enable_execute_stack (void *addr) \
#undef ENABLE_EXECUTE_STACK
#define ENABLE_EXECUTE_STACK MINGW_ENABLE_EXECUTE_STACK
+#define SUBTARGET_INIT_BUILTINS \
+do { \
+ if (TARGET_64BIT_MS_ABI) \
+ { \
+ /* These builtin functions have a different return \
+ type (intptr_t) on 64-bit MS Windows. */ \
+ disable_builtin_function ("execl"); \
+ disable_builtin_function ("execlp"); \
+ disable_builtin_function ("execle"); \
+ disable_builtin_function ("execv"); \
+ disable_builtin_function ("execvp"); \
+ disable_builtin_function ("execve"); \
+ } \
+ /* Second argument of MS scalb is long, not double. */ \
+ disable_builtin_function ("scalb"); \
+} while (0) \
#ifdef IN_LIBGCC2
#include <windows.h>