OSDN Git Service

PR c/12802
[pf3gnuchains/gcc-fork.git] / gcc / libgcc2.h
index c31a146..3c7e3e2 100644 (file)
@@ -1,60 +1,41 @@
 /* Header file for libgcc2.c.  */
-/* Copyright (C) 2000
+/* Copyright (C) 2000, 2001
    Free Software Foundation, Inc.
 
-This file is part of GNU CC.
+This file is part of GCC.
 
-GNU CC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2, or (at your option) any later
+version.
 
-GNU CC is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the 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, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+along with GCC; see the file COPYING.  If not, write to the Free
+Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+02111-1307, USA.  */
 
-#ifndef __LIBGCC2_H__
-#define __LIBGCC2_H__
+/* As a special exception, if you link this library with other files,
+   some of which are compiled with GCC, to produce an executable,
+   this library does not by itself cause the resulting executable
+   to be covered by the GNU General Public License.
+   This exception does not however invalidate any other reasons why
+   the executable file might be covered by the GNU General Public License.  */
 
-typedef void (*__terminate_func_ptr)(void) __attribute__ ((__noreturn__));
+
+#ifndef GCC_LIBGCC2_H
+#define GCC_LIBGCC2_H
+
+#pragma GCC visibility push(default)
 
 extern int __gcc_bcmp (const unsigned char *, const unsigned char *, size_t);
-extern void *__builtin_saveregs (void);
-extern void __dummy (void);
 extern void __clear_cache (char *, char *);
-extern void __pure_virtual (void) __attribute__ ((__noreturn__));
-extern void __terminate (void) __attribute__ ((__noreturn__));
-extern __terminate_func_ptr __terminate_set_func (__terminate_func_ptr);
-extern void __default_terminate (void) __attribute__ ((__noreturn__));
-extern void *__throw_type_match (void *, void *, void *);
-extern void __empty (void);
-extern void *__get_eh_context (void);
-extern void **__get_eh_info (void);
-extern void ***__get_dynamic_handler_chain (void);
-extern int __eh_rtime_match (void *);
-extern void __unwinding_cleanup (void);
-extern void __rethrow (void *);
-extern void __throw (void);
-extern void __sjthrow (void) __attribute__ ((__noreturn__));
-extern void __sjpopnthrow (void) __attribute__ ((__noreturn__));
 extern void __eprintf (const char *, const char *, unsigned int, const char *)
   __attribute__ ((__noreturn__));
-extern void *__eh_alloc (size_t);
-extern void __eh_free (void *);
-
-struct bb;
-extern void __bb_exit_func (void);
-extern void __bb_init_func (struct bb *);
-extern void __bb_fork_func (void);
-extern void __bb_trace_func (void);
-extern void __bb_trace_ret (void);
-extern void __bb_init_trace_func (struct bb *, unsigned long);
 
 struct exception_descriptor;
 extern short int __get_eh_table_language (struct exception_descriptor *);
@@ -90,15 +71,15 @@ typedef unsigned int UQItype        __attribute__ ((mode (QI)));
 typedef                 int HItype     __attribute__ ((mode (HI)));
 typedef unsigned int UHItype   __attribute__ ((mode (HI)));
 #if MIN_UNITS_PER_WORD > 1
-/* These typedefs are usually forbidden on dsp's with UNITS_PER_WORD 1 */
+/* These typedefs are usually forbidden on dsp's with UNITS_PER_WORD 1 */
 typedef         int SItype     __attribute__ ((mode (SI)));
 typedef unsigned int USItype   __attribute__ ((mode (SI)));
 #if LONG_LONG_TYPE_SIZE > 32
-/* These typedefs are usually forbidden on archs with UNITS_PER_WORD 2 */
+/* These typedefs are usually forbidden on archs with UNITS_PER_WORD 2 */
 typedef                 int DItype     __attribute__ ((mode (DI)));
 typedef unsigned int UDItype   __attribute__ ((mode (DI)));
 #if MIN_UNITS_PER_WORD > 4
-/* These typedefs are usually forbidden on archs with UNITS_PER_WORD 4 */
+/* These typedefs are usually forbidden on archs with UNITS_PER_WORD 4 */
 typedef                 int TItype     __attribute__ ((mode (TI)));
 typedef unsigned int UTItype   __attribute__ ((mode (TI)));
 #endif
@@ -110,7 +91,7 @@ typedef unsigned int UTItype __attribute__ ((mode (TI)));
 typedef        float SFtype    __attribute__ ((mode (SF)));
 typedef                float DFtype    __attribute__ ((mode (DF)));
 
-#if LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 96
+#if LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 80
 typedef                float XFtype    __attribute__ ((mode (XF)));
 #endif
 #if LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 128
@@ -199,6 +180,9 @@ typedef int word_type __attribute__ ((mode (__word__)));
 #define __NDW(a,b)     __ ## a ## hi ## b
 #endif
 
+#define Wtype_MAX ((Wtype)(((UWtype)1 << (W_TYPE_SIZE - 1)) - 1))
+#define Wtype_MIN (- Wtype_MAX - 1)
+
 #define __muldi3       __NDW(mul,3)
 #define __divdi3       __NDW(div,3)
 #define __udivdi3      __NDW(udiv,3)
@@ -208,7 +192,6 @@ typedef int word_type __attribute__ ((mode (__word__)));
 #define __lshrdi3      __NDW(lshr,3)
 #define __ashldi3      __NDW(ashl,3)
 #define __ashrdi3      __NDW(ashr,3)
-#define __ffsdi2       __NDW(ffs,2)
 #define __cmpdi2       __NDW(cmp,2)
 #define __ucmpdi2      __NDW(ucmp,2)
 #define __udivmoddi4   __NDW(udivmod,4)
@@ -229,6 +212,17 @@ typedef int word_type __attribute__ ((mode (__word__)));
 #define __fixunsdfSI   __NW(fixunsdf,)
 #define __fixunssfSI   __NW(fixunssf,)
 
+#define __ffsSI2       __NW(ffs,2)
+#define __clzSI2       __NW(clz,2)
+#define __ctzSI2       __NW(ctz,2)
+#define __popcountSI2  __NW(popcount,2)
+#define __paritySI2    __NW(parity,2)
+#define __ffsDI2       __NDW(ffs,2)
+#define __clzDI2       __NDW(clz,2)
+#define __ctzDI2       __NDW(ctz,2)
+#define __popcountDI2  __NDW(popcount,2)
+#define __parityDI2    __NDW(parity,2)
+
 extern DWtype __muldi3 (DWtype, DWtype);
 extern DWtype __divdi3 (DWtype, DWtype);
 extern UDWtype __udivdi3 (UDWtype, UDWtype);
@@ -249,7 +243,6 @@ extern DWtype __negdi2 (DWtype);
 extern DWtype __lshrdi3 (DWtype, word_type);
 extern DWtype __ashldi3 (DWtype, word_type);
 extern DWtype __ashrdi3 (DWtype, word_type);
-extern DWtype __ffsdi2 (DWtype);
 
 /* __udiv_w_sdiv is static inline when building other libgcc2 portions.  */
 #if (!defined(L_udivdi3) && !defined(L_divdi3) && \
@@ -281,7 +274,7 @@ extern UWtype __fixunssfSI (SFtype);
 extern DWtype __fixunsdfDI (DFtype);
 extern DWtype __fixunssfDI (SFtype);
 
-#if LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 96
+#if LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 80
 extern DWtype __fixxfdi (XFtype);
 extern DWtype __fixunsxfDI (XFtype);
 extern XFtype __floatdixf (DWtype);
@@ -316,4 +309,21 @@ typedef union
 
 #include "longlong.h"
 
-#endif /* __LIBGCC2_H__ */
+#undef int
+extern int __clzDI2 (UDWtype);
+extern int __clzSI2 (UWtype);
+extern int __ctzSI2 (UWtype);
+extern int __ffsSI2 (UWtype);
+extern int __ffsDI2 (DWtype);
+extern int __ctzDI2 (UDWtype);
+extern int __popcountSI2 (UWtype);
+extern int __popcountDI2 (UDWtype);
+extern int __paritySI2 (UWtype);
+extern int __parityDI2 (UDWtype);
+#define int bogus_type
+
+extern void __enable_execute_stack (void *);
+
+#pragma GCC visibility pop
+
+#endif /* ! GCC_LIBGCC2_H */