From 1c9524603bf6207984cc21e7df6520e935a85e35 Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Thu, 25 Jun 2015 17:16:31 +0000 Subject: [PATCH] mips.c (mips16_flip_traits): Use it. gcc/ * config/mips/mips.c (mips16_flip_traits): Use it. (local_alias_traits, mips16_local_aliases): Convert from a map of rtxes to a map of symbol names. (mips16_local_alias): Update accordingly. From-SVN: r224972 --- gcc/ChangeLog | 7 +++++++ gcc/config/mips/mips.c | 41 ++++++++--------------------------------- 2 files changed, 15 insertions(+), 33 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 33c3c0d8ef8..3a639edcd4f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2015-06-25 Richard Sandiford + + * config/mips/mips.c (mips16_flip_traits): Use it. + (local_alias_traits, mips16_local_aliases): Convert from a map of + rtxes to a map of symbol names. + (mips16_local_alias): Update accordingly. + 2015-06-25 Richard Sandiford * hash-traits.h (string_hash, nofree_string_hash): New classes. diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 3e0adf00c50..c8374cf95d5 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -1263,15 +1263,7 @@ static int mips_register_move_cost (machine_mode, reg_class_t, static unsigned int mips_function_arg_boundary (machine_mode, const_tree); static machine_mode mips_get_reg_raw_mode (int regno); -struct mips16_flip_traits : default_hashmap_traits -{ - static hashval_t hash (const char *s) { return htab_hash_string (s); } - static bool - equal_keys (const char *a, const char *b) - { - return !strcmp (a, b); - } -}; +struct mips16_flip_traits : simple_hashmap_traits {}; /* This hash table keeps track of implicit "mips16" and "nomips16" attributes for -mflip_mips16. It maps decl names onto a boolean mode setting. */ @@ -6597,30 +6589,13 @@ mips_load_call_address (enum mips_call_type type, rtx dest, rtx addr) } } -struct local_alias_traits : default_hashmap_traits -{ - static hashval_t hash (rtx); - static bool equal_keys (rtx, rtx); -}; +struct local_alias_traits : simple_hashmap_traits {}; /* Each locally-defined hard-float MIPS16 function has a local symbol associated with it. This hash table maps the function symbol (FUNC) to the local symbol (LOCAL). */ -static GTY (()) hash_map *mips16_local_aliases; - -/* Hash table callbacks for mips16_local_aliases. */ - -hashval_t -local_alias_traits::hash (rtx func) -{ - return htab_hash_string (XSTR (func, 0)); -} - -bool -local_alias_traits::equal_keys (rtx func1, rtx func2) -{ - return rtx_equal_p (func1, func2); -} +static GTY (()) hash_map + *mips16_local_aliases; /* FUNC is the symbol for a locally-defined hard-float MIPS16 function. Return a local alias for it, creating a new one if necessary. */ @@ -6631,23 +6606,23 @@ mips16_local_alias (rtx func) /* Create the hash table if this is the first call. */ if (mips16_local_aliases == NULL) mips16_local_aliases - = hash_map::create_ggc (37); + = hash_map::create_ggc (37); /* Look up the function symbol, creating a new entry if need be. */ bool existed; - rtx *slot = &mips16_local_aliases->get_or_insert (func, &existed); + const char *func_name = XSTR (func, 0); + rtx *slot = &mips16_local_aliases->get_or_insert (func_name, &existed); gcc_assert (slot != NULL); if (!existed) { - const char *func_name, *local_name; rtx local; /* Create a new SYMBOL_REF for the local symbol. The choice of __fn_local_* is based on the __fn_stub_* names that we've traditionally used for the non-MIPS16 stub. */ func_name = targetm.strip_name_encoding (XSTR (func, 0)); - local_name = ACONCAT (("__fn_local_", func_name, NULL)); + const char *local_name = ACONCAT (("__fn_local_", func_name, NULL)); local = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (local_name)); SYMBOL_REF_FLAGS (local) = SYMBOL_REF_FLAGS (func) | SYMBOL_FLAG_LOCAL;