Support NT Graphics programs; also bug fixes.
authorRichard Kenner <kenner@gcc.gnu.org>
Tue, 21 Feb 1995 23:23:48 +0000 (18:23 -0500)
committerRichard Kenner <kenner@gcc.gnu.org>
Tue, 21 Feb 1995 23:23:48 +0000 (18:23 -0500)
From-SVN: r9001

gcc/config/i386/win-nt.h

index 09cba358e4bae5f057127a22b3b6cc04b70afb41..d551e91d39a6494b3d3e1a44a2dc07933b21f037 100644 (file)
@@ -1,7 +1,7 @@
-/* Definitions of target machine for GNU compiler
-   for an Intel i386 or later processor running Windows NT 3.x.
-   Copyright (C) 1994 Free Software Foundation, Inc.
-   Contributed by Douglas B. Rupp (drupp@cs.washington.edu)
+/* Operating system specific defines to be used when targeting GCC for
+   Windows NT 3.x on an i386.
+   Copyright (C) 1994, 1995 Free Software Foundation, Inc.
+   Contributed by Douglas B. Rupp (drupp@cs.washington.edu).
 
 This file is part of GNU CC.
 
@@ -17,16 +17,74 @@ GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with GNU CC; see the file COPYING.  If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 #define YES_UNDERSCORES
 
 #include "i386/gas.h"
-#include "winnt/winnt.h"
 
+/* Value is the number of bytes of arguments automatically
+   popped when returning from a subroutine call.
+   FUNDECL is the declaration node of the function (as a tree),
+   FUNTYPE is the data type of the function (as a tree),
+   or for a library call it is an identifier node for the subroutine name.
+   SIZE is the number of bytes of arguments passed on the stack.
+
+   This only happens if the function declaration has the STDCALL attribute and
+   the number of arguments is not variable */
+
+#undef RETURN_POPS_ARGS
+#define RETURN_POPS_ARGS(FUNDECL,FUNTYPE,SIZE) \
+  ( \
+   TREE_CODE (FUNTYPE) == IDENTIFIER_NODE \
+   ? \
+     0 \
+   : \
+     ( \
+      ((FUNDECL && (TREE_CODE_CLASS (TREE_CODE (FUNDECL)) == 'd') ? \
+        chain_member_value (get_identifier ("stdcall"), \
+                            DECL_MACHINE_ATTRIBUTES (FUNDECL) \
+                           )                                      : 0 \
+       ) \
+      ) \
+      && \
+         ( \
+          TYPE_ARG_TYPES (FUNTYPE) == 0 \
+          || \
+            TREE_VALUE (tree_last (TYPE_ARG_TYPES (FUNTYPE))) \
+            == void_type_node \
+         ) \
+     ) \
+     ? \
+       (SIZE) \
+     : \
+       (aggregate_value_p (TREE_TYPE (FUNTYPE))) \
+       ? \
+         GET_MODE_SIZE (Pmode) \
+       : \
+         0 \
+  )
+
+#undef FUNCTION_PROLOGUE
+#define FUNCTION_PROLOGUE(FILE,SIZE) \
+  winnt_function_prologue (FILE, SIZE)
+
+
+#ifdef CPP_PREDEFINES
 #undef CPP_PREDEFINES
-#define CPP_PREDEFINES "-Dunix -Di386 -DWINNT -D_M_IX86 -D_X86_ -D__STDC__=0 \
-  -DALMOST_STDC -Asystem(unix) -Asystem(winnt) -Acpu(i386) -Amachine(i386)"
+#endif
+#define CPP_PREDEFINES "-Dunix -Di386 -DWIN32 -D_WIN32 \
+  -DWINNT -D_M_IX86=300 -D_X86_=1 -DALMOST_STDC -D_MSC_VER=800\
+  -Asystem(unix) -Asystem(winnt) -Acpu(i386) -Amachine(i386)"
+
+#define SIZE_TYPE "unsigned int"
+#define PTRDIFF_TYPE "int"
+#define WCHAR_UNSIGNED 1
+#define WCHAR_TYPE_SIZE 16
+#define WCHAR_TYPE "short unsigned int"
+#undef LONG_DOUBLE_TYPE_SIZE
+#define LONG_DOUBLE_TYPE_SIZE 64
+#define HAVE_ATEXIT 1
 
 #undef EXTRA_SECTIONS
 #define EXTRA_SECTIONS in_ctor, in_dtor
@@ -36,7 +94,6 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
   CTOR_SECTION_FUNCTION                                                \
   DTOR_SECTION_FUNCTION
 
-#undef CTOR_SECTION_FUNCTION
 #define CTOR_SECTION_FUNCTION                                  \
 void                                                           \
 ctor_section ()                                                        \
@@ -48,7 +105,6 @@ ctor_section ()                                                      \
     }                                                          \
 }
 
-#undef DTOR_SECTION_FUNCTION
 #define DTOR_SECTION_FUNCTION                                  \
 void                                                           \
 dtor_section ()                                                        \
@@ -60,7 +116,6 @@ dtor_section ()                                                      \
     }                                                          \
 }
 
-#undef ASM_OUTPUT_CONSTRUCTOR
 #define ASM_OUTPUT_CONSTRUCTOR(FILE,NAME)      \
   do {                                         \
     ctor_section ();                           \
@@ -69,7 +124,6 @@ dtor_section ()                                                      \
     fprintf (FILE, "\n");                      \
   } while (0)
 
-#undef ASM_OUTPUT_DESTRUCTOR
 #define ASM_OUTPUT_DESTRUCTOR(FILE,NAME)               \
   do {                                         \
     dtor_section ();                                   \
@@ -77,3 +131,9 @@ dtor_section ()                                                      \
     assemble_name (FILE, NAME);                \
     fprintf (FILE, "\n");                      \
   } while (0)
+
+#define HAVE_probe 1
+#define gen_probe() gen_rtx(ASM_INPUT, VOIDmode, "call __stkchk\n")
+
+#include "winnt/winnt.h"
+