190075Sobrien/* Definitions for code generation pass of GNU compiler.
2169689Skan   Copyright (C) 2001, 2004 Free Software Foundation, Inc.
390075Sobrien
490075SobrienThis file is part of GCC.
590075Sobrien
690075SobrienGCC is free software; you can redistribute it and/or modify
790075Sobrienit under the terms of the GNU General Public License as published by
890075Sobrienthe Free Software Foundation; either version 2, or (at your option)
990075Sobrienany later version.
1090075Sobrien
1190075SobrienGCC is distributed in the hope that it will be useful,
1290075Sobrienbut WITHOUT ANY WARRANTY; without even the implied warranty of
1390075SobrienMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1490075SobrienGNU General Public License for more details.
1590075Sobrien
1690075SobrienYou should have received a copy of the GNU General Public License
1790075Sobrienalong with GCC; see the file COPYING.  If not, write to
18169689Skanthe Free Software Foundation, 51 Franklin Street, Fifth Floor,
19169689SkanBoston, MA 02110-1301, USA.  */
2090075Sobrien
2190075Sobrien#ifndef GCC_LIBFUNCS_H
2290075Sobrien#define GCC_LIBFUNCS_H
2390075Sobrien
2490075Sobrien/* Enumeration of indexes into libfunc_table.  */
2590075Sobrienenum libfunc_index
2690075Sobrien{
2796263Sobrien  LTI_abort,
2890075Sobrien  LTI_memcpy,
2990075Sobrien  LTI_memmove,
3090075Sobrien  LTI_memcmp,
3190075Sobrien  LTI_memset,
32132718Skan  LTI_setbits,
3390075Sobrien
3490075Sobrien  LTI_unwind_resume,
3590075Sobrien  LTI_eh_personality,
3690075Sobrien  LTI_setjmp,
3790075Sobrien  LTI_longjmp,
3890075Sobrien  LTI_unwind_sjlj_register,
3990075Sobrien  LTI_unwind_sjlj_unregister,
4090075Sobrien
4190075Sobrien  LTI_profile_function_entry,
4290075Sobrien  LTI_profile_function_exit,
4390075Sobrien
44132718Skan  LTI_gcov_flush,
45132718Skan
4690075Sobrien  LTI_MAX
4790075Sobrien};
4890075Sobrien
4990075Sobrien/* SYMBOL_REF rtx's for the library functions that are called
5090075Sobrien   implicitly and not via optabs.  */
51117395Skanextern GTY(()) rtx libfunc_table[LTI_MAX];
5290075Sobrien
5390075Sobrien/* Accessor macros for libfunc_table.  */
5490075Sobrien
5596263Sobrien#define abort_libfunc	(libfunc_table[LTI_abort])
5690075Sobrien#define memcpy_libfunc	(libfunc_table[LTI_memcpy])
5790075Sobrien#define memmove_libfunc	(libfunc_table[LTI_memmove])
5890075Sobrien#define memcmp_libfunc	(libfunc_table[LTI_memcmp])
5990075Sobrien#define memset_libfunc	(libfunc_table[LTI_memset])
60132718Skan#define setbits_libfunc	(libfunc_table[LTI_setbits])
6190075Sobrien
6290075Sobrien#define unwind_resume_libfunc	(libfunc_table[LTI_unwind_resume])
6390075Sobrien#define eh_personality_libfunc	(libfunc_table[LTI_eh_personality])
6490075Sobrien#define setjmp_libfunc	(libfunc_table[LTI_setjmp])
6590075Sobrien#define longjmp_libfunc	(libfunc_table[LTI_longjmp])
6690075Sobrien#define unwind_sjlj_register_libfunc (libfunc_table[LTI_unwind_sjlj_register])
6790075Sobrien#define unwind_sjlj_unregister_libfunc \
6890075Sobrien  (libfunc_table[LTI_unwind_sjlj_unregister])
6990075Sobrien
7090075Sobrien#define profile_function_entry_libfunc	(libfunc_table[LTI_profile_function_entry])
7190075Sobrien#define profile_function_exit_libfunc	(libfunc_table[LTI_profile_function_exit])
7290075Sobrien
73132718Skan#define gcov_flush_libfunc	(libfunc_table[LTI_gcov_flush])
74132718Skan
7590075Sobrien#endif /* GCC_LIBFUNCS_H */
76