aboutsummaryrefslogtreecommitdiff
path: root/gcc/symtab.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2020-11-06 13:30:39 +0100
committerJan Hubicka <jh@suse.cz>2020-11-06 13:30:39 +0100
commit7144270e2de7ba4954729c75ca389ed3081134ee (patch)
tree307a579391e35ce50e8199e2d3504aefdd5caf33 /gcc/symtab.c
parent8a2fd716c9e9ccde7fb98c7128d2e907ece809e9 (diff)
downloadgcc-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.c17
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. */