OSDN Git Service

* include/_mingw.h (__MINGW_NOTHROW): Define.
authordannysmith <dannysmith>
Fri, 22 Jun 2007 09:19:25 +0000 (09:19 +0000)
committerdannysmith <dannysmith>
Fri, 22 Jun 2007 09:19:25 +0000 (09:19 +0000)
winsup/mingw/ChangeLog
winsup/mingw/include/_mingw.h

index 0ccf8d1..8739804 100644 (file)
@@ -1,3 +1,7 @@
+2007-06-22  Danny Smith  <dannysmith@users.sourceforge.net>
+
+       * include/_mingw.h (__MINGW_NOTHROW): Define.
+
 2007-06-18  Danny Smith  <dannysmith@users.sourceforge.net>
 
        * include/stdio.h (vsnprintf): Remove inline definition.
index 81e81b8..bd324da 100644 (file)
@@ -23,6 +23,9 @@
 #ifndef __MINGW_H
 #define __MINGW_H
 
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
 
 /* These are defined by the user (or the compiler)
    to specify how identifiers are imported from a DLL.
 #   define _CRTIMP
 #  endif
 # endif /* __declspec */
-# ifndef __cdecl
-#  define __cdecl __attribute__ ((__cdecl__))
+
+/*
+   The next two defines can cause problems if user code adds the __cdecl attribute
+   like so:
+   void __attribute__ ((__cdecl)) foo(void); 
+*/
+# ifndef __cdecl 
+#  define __cdecl  __attribute__ ((__cdecl__))
 # endif
 # ifndef __stdcall
 #  define __stdcall __attribute__ ((__stdcall__))
 #else
 #define __MINGW_ATTRIB_DEPRECATED
 #endif /* GNUC >= 3.1 */
+#if  __MINGW_GNUC_PREREQ (3, 3)
+#define __MINGW_NOTHROW __attribute__ ((__nothrow__))
+#else
+#define __MINGW_NOTHROW
+#endif /* GNUC >= 3.3 */
+
+
+/* TODO: Mark (almost) all CRT functions as __MINGW_NOTHROW.  This will
+allow GCC to optimize away some EH unwind code, at least in DW2 case.  */
 
 #ifndef __MSVCRT_VERSION__
 /*  High byte is the major version, low byte is the minor. */