mingw32.h (SUBTARGET_INIT_BUILTINS): New.
authorKai Tietz <kai.tietz@onevision.com>
Fri, 25 Apr 2008 23:25:26 +0000 (23:25 +0000)
committerKai Tietz <ktietz@gcc.gnu.org>
Fri, 25 Apr 2008 23:25:26 +0000 (01:25 +0200)
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

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

index 374615b45463609bfd52650a85b947898a2e9742..1e546d5164da8b2d1068489fb3b4d221967ad243 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 2df9683f457af41888eff90c44a1788dbc249f70..1e9776acabb703d5ca3a3ea07b59b90c83a3552f 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 200569ed09065d4d049ee7603641e35fdaa0818b..19b57dbecc8d4e1d3cf2f1b18be8d48a5e48751e 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>