diff options
author | Jan Hubicka <jh@suse.cz> | 2020-11-06 13:30:39 +0100 |
---|---|---|
committer | Jan Hubicka <jh@suse.cz> | 2020-11-06 13:30:39 +0100 |
commit | 7144270e2de7ba4954729c75ca389ed3081134ee (patch) | |
tree | 307a579391e35ce50e8199e2d3504aefdd5caf33 /gcc/symtab.c | |
parent | 8a2fd716c9e9ccde7fb98c7128d2e907ece809e9 (diff) | |
download | gcc-7144270e2de7ba4954729c75ca389ed3081134ee.zip gcc-7144270e2de7ba4954729c75ca389ed3081134ee.tar.gz gcc-7144270e2de7ba4954729c75ca389ed3081134ee.tar.bz2 |
Move ipa-refs from ggc to heap.
gcc/ChangeLog:
* ipa-ref.h (enum ipa_ref_use): Remove GTY marker.
(struct ipa_ref): Remove GTY marker; reorder for better packing.
(struct ipa_ref_list): Remove GTY marker; turn references
nad referring to va_heap, vl_ptr vectors; update accesors.
* cgraph.h (symtab_node::iterate_reference): Update.
* ipa-ref.c (ipa_ref::remove_reference): Update.
* symtab.c (symtab_node::create_reference): Update.
(symtab_node::remove_all_references): Update.
(symtab_node::resolve_alias): Update.
gcc/cp/ChangeLog:
* tree.c (cp_fix_function_decl_p): Do not access ipa_ref_list dirrectly.
Diffstat (limited to 'gcc/symtab.c')
-rw-r--r-- | gcc/symtab.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/gcc/symtab.c b/gcc/symtab.c index 8ce1c06..58b14f3 100644 --- a/gcc/symtab.c +++ b/gcc/symtab.c @@ -592,10 +592,9 @@ symtab_node::create_reference (symtab_node *referred_node, gcc_checking_assert (use_type != IPA_REF_ALIAS || !stmt); list = &ref_list; - old_references = vec_safe_address (list->references); - vec_safe_grow (list->references, vec_safe_length (list->references) + 1, - true); - ref = &list->references->last (); + old_references = list->references.address (); + list->references.safe_grow (list->references.length () + 1, false); + ref = &list->references.last (); list2 = &referred_node->ref_list; @@ -623,7 +622,7 @@ symtab_node::create_reference (symtab_node *referred_node, ref->speculative = 0; /* If vector was moved in memory, update pointers. */ - if (old_references != list->references->address ()) + if (old_references != list->references.address ()) { int i; for (i = 0; iterate_reference(i, ref2); i++) @@ -786,9 +785,9 @@ symtab_node::clear_stmts_in_references (void) void symtab_node::remove_all_references (void) { - while (vec_safe_length (ref_list.references)) - ref_list.references->last ().remove_reference (); - vec_free (ref_list.references); + while (ref_list.references.length ()) + ref_list.references.last ().remove_reference (); + ref_list.references.release (); } /* Remove all referring items in ref list. */ @@ -1774,7 +1773,7 @@ symtab_node::resolve_alias (symtab_node *target, bool transparent) { symtab_node *n; - gcc_assert (!analyzed && !vec_safe_length (ref_list.references)); + gcc_assert (!analyzed && !ref_list.references.length ()); /* Never let cycles to creep into the symbol table alias references; those will make alias walkers to be infinite. */ |