2008-04-25 Kai Tietz <kai.tietz@onevision.com>
authorktietz <ktietz@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 25 Apr 2008 23:25:26 +0000 (23:25 +0000)
committerktietz <ktietz@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 25 Apr 2008 23:25:26 +0000 (23:25 +0000)
* config/i386/mingw32.h (SUBTARGET_INIT_BUILTINS): New.
* config/i386/i386.c (ix86_init_builtins): Use of
SUBTARGET_INIT_BUILTINS.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@134683 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/i386/i386.c
gcc/config/i386/mingw32.h

index 374615b..1e546d5 100644 (file)
@@ -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
index 2df9683..1e9776a 100644 (file)
@@ -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
index 200569e..19b57db 100644 (file)
@@ -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>