diff gcc/libfuncs.h @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents f6334be47118
children 84e7813d76e9
line wrap: on
line diff
--- a/gcc/libfuncs.h	Sun Aug 21 07:07:55 2011 +0900
+++ b/gcc/libfuncs.h	Fri Oct 27 22:46:09 2017 +0900
@@ -1,5 +1,5 @@
 /* Definitions for code generation pass of GNU compiler.
-   Copyright (C) 2001, 2004, 2007, 2008, 2010 Free Software Foundation, Inc.
+   Copyright (C) 2001-2017 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -20,42 +20,37 @@
 #ifndef GCC_LIBFUNCS_H
 #define GCC_LIBFUNCS_H
 
-#include "hashtab.h"
 
 /* Enumeration of indexes into libfunc_table.  */
 enum libfunc_index
 {
-  LTI_abort,
-  LTI_memcpy,
-  LTI_memmove,
-  LTI_memcmp,
-  LTI_memset,
-  LTI_setbits,
-
-  LTI_setjmp,
-  LTI_longjmp,
   LTI_unwind_sjlj_register,
   LTI_unwind_sjlj_unregister,
-
-  LTI_profile_function_entry,
-  LTI_profile_function_exit,
-
   LTI_synchronize,
-
-  LTI_gcov_flush,
-
   LTI_MAX
 };
 
-/* Information about an optab-related libfunc.  We use the same hashtable
-   for normal optabs and conversion optabs.  In the first case mode2
-   is unused.  */
-struct GTY(()) libfunc_entry {
-  size_t optab;
-  enum machine_mode mode1, mode2;
+/* Information about an optab-related libfunc.  The op field is logically
+   an enum optab_d, and the mode fields are logically machine_mode.
+   However, in the absence of forward-declared enums, there's no practical
+   benefit of pulling in the defining headers.
+
+   We use the same hashtable for normal optabs and conversion optabs.  In
+   the first case mode2 is forced to VOIDmode.  */
+
+struct GTY((for_user)) libfunc_entry {
+  int op, mode1, mode2;
   rtx libfunc;
 };
 
+/* Descriptor for libfunc_entry.  */
+
+struct libfunc_hasher : ggc_ptr_hash<libfunc_entry>
+{
+  static hashval_t hash (libfunc_entry *);
+  static bool equal (libfunc_entry *, libfunc_entry *);
+};
+
 /* Target-dependent globals.  */
 struct GTY(()) target_libfuncs {
   /* SYMBOL_REF rtx's for the library functions that are called
@@ -63,7 +58,7 @@
   rtx x_libfunc_table[LTI_MAX];
 
   /* Hash table used to convert declarations into nodes.  */
-  htab_t GTY((param_is (struct libfunc_entry))) x_libfunc_hash;
+  hash_table<libfunc_hasher> *GTY(()) x_libfunc_hash;
 };
 
 extern GTY(()) struct target_libfuncs default_target_libfuncs;
@@ -78,26 +73,11 @@
 
 /* Accessor macros for libfunc_table.  */
 
-#define abort_libfunc	(libfunc_table[LTI_abort])
-#define memcpy_libfunc	(libfunc_table[LTI_memcpy])
-#define memmove_libfunc	(libfunc_table[LTI_memmove])
-#define memcmp_libfunc	(libfunc_table[LTI_memcmp])
-#define memset_libfunc	(libfunc_table[LTI_memset])
-#define setbits_libfunc	(libfunc_table[LTI_setbits])
-
-#define setjmp_libfunc	(libfunc_table[LTI_setjmp])
-#define longjmp_libfunc	(libfunc_table[LTI_longjmp])
 #define unwind_sjlj_register_libfunc (libfunc_table[LTI_unwind_sjlj_register])
 #define unwind_sjlj_unregister_libfunc \
   (libfunc_table[LTI_unwind_sjlj_unregister])
-
-#define profile_function_entry_libfunc	(libfunc_table[LTI_profile_function_entry])
-#define profile_function_exit_libfunc	(libfunc_table[LTI_profile_function_exit])
-
 #define synchronize_libfunc	(libfunc_table[LTI_synchronize])
 
-#define gcov_flush_libfunc	(libfunc_table[LTI_gcov_flush])
-
 /* In explow.c */
 extern void set_stack_check_libfunc (const char *);