From 665507eb34cabeefc52b4fbe6b45ee27a63b148a Mon Sep 17 00:00:00 2001 From: rguenth Date: Tue, 22 May 2012 09:33:01 +0000 Subject: [PATCH] 2012-05-22 Richard Guenther * tree-flow.h (add_referenced_var_1): Declare. (add_referenced_var): Define. * tree-dfa.c (referenced_var_check_and_insert): Avoid one hash lookup. (add_referenced_var): Rename to ... (add_referenced_var_1): ... this. Take struct function argument. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@187766 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 9 +++++++++ gcc/tree-dfa.c | 17 ++++++++--------- gcc/tree-flow.h | 3 ++- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 496bb5fdc28..fc082836fbc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2012-05-22 Richard Guenther + + * tree-flow.h (add_referenced_var_1): Declare. + (add_referenced_var): Define. + * tree-dfa.c (referenced_var_check_and_insert): Avoid one hash + lookup. + (add_referenced_var): Rename to ... + (add_referenced_var_1): ... this. Take struct function argument. + 2012-05-22 Ramana Radhakrishnan PR target/53334 diff --git a/gcc/tree-dfa.c b/gcc/tree-dfa.c index 46fcfc1ef1d..785ae1b3d4b 100644 --- a/gcc/tree-dfa.c +++ b/gcc/tree-dfa.c @@ -503,24 +503,23 @@ referenced_var_lookup (struct function *fn, unsigned int uid) Return true if it required insertion. */ static bool -referenced_var_check_and_insert (tree to) +referenced_var_check_and_insert (tree to, struct function *fn) { - tree h, *loc; + tree *loc; struct tree_decl_minimal in; unsigned int uid = DECL_UID (to); in.uid = uid; - h = (tree) htab_find_with_hash (gimple_referenced_vars (cfun), &in, uid); - if (h) + loc = (tree *) htab_find_slot_with_hash (gimple_referenced_vars (fn), + &in, uid, INSERT); + if (*loc) { /* DECL_UID has already been entered in the table. Verify that it is the same entry as TO. See PR 27793. */ - gcc_assert (h == to); + gcc_assert (*loc == to); return false; } - loc = (tree *) htab_find_slot_with_hash (gimple_referenced_vars (cfun), - &in, uid, INSERT); *loc = to; return true; } @@ -575,7 +574,7 @@ set_default_def (tree var, tree def) /* Add VAR to the list of referenced variables if it isn't already there. */ bool -add_referenced_var (tree var) +add_referenced_var_1 (tree var, struct function *fn) { gcc_checking_assert (TREE_CODE (var) == VAR_DECL || TREE_CODE (var) == PARM_DECL @@ -585,7 +584,7 @@ add_referenced_var (tree var) create_var_ann (var); /* Insert VAR into the referenced_vars hash table if it isn't present. */ - if (referenced_var_check_and_insert (var)) + if (referenced_var_check_and_insert (var, fn)) return true; return false; diff --git a/gcc/tree-flow.h b/gcc/tree-flow.h index faa06ae130d..78bd9f86353 100644 --- a/gcc/tree-flow.h +++ b/gcc/tree-flow.h @@ -491,7 +491,8 @@ extern void debug_referenced_vars (void); extern void dump_referenced_vars (FILE *); extern void dump_variable (FILE *, tree); extern void debug_variable (tree); -extern bool add_referenced_var (tree); +extern bool add_referenced_var_1 (tree, struct function *); +#define add_referenced_var(v) add_referenced_var_1 ((v), cfun) extern void remove_referenced_var (tree); extern tree make_rename_temp (tree, const char *); extern void set_default_def (tree, tree); -- 2.11.4.GIT