aboutsummaryrefslogtreecommitdiff
path: root/gcc/ipa-ref.h
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/ipa-ref.h
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/ipa-ref.h')
-rw-r--r--gcc/ipa-ref.h21
1 files changed, 10 insertions, 11 deletions
diff --git a/gcc/ipa-ref.h b/gcc/ipa-ref.h
index 1de5bd3..3ea3f66 100644
--- a/gcc/ipa-ref.h
+++ b/gcc/ipa-ref.h
@@ -27,7 +27,7 @@ struct symtab_node;
/* How the reference is done. */
-enum GTY(()) ipa_ref_use
+enum ipa_ref_use
{
IPA_REF_LOAD,
IPA_REF_STORE,
@@ -36,7 +36,7 @@ enum GTY(()) ipa_ref_use
};
/* Record of reference in callgraph or varpool. */
-struct GTY(()) ipa_ref
+struct ipa_ref
{
public:
/* Remove reference. */
@@ -59,28 +59,27 @@ public:
symtab_node *referred;
gimple *stmt;
unsigned int lto_stmt_uid;
+ unsigned int referred_index;
/* speculative id is used to link direct calls with their corresponding
IPA_REF_ADDR references when representing speculative calls. */
unsigned int speculative_id : 16;
- unsigned int referred_index;
ENUM_BITFIELD (ipa_ref_use) use:3;
unsigned int speculative:1;
};
typedef struct ipa_ref ipa_ref_t;
-typedef struct ipa_ref *ipa_ref_ptr;
/* List of references. This is stored in both callgraph and varpool nodes. */
-struct GTY(()) ipa_ref_list
+struct ipa_ref_list
{
public:
/* Return first reference in list or NULL if empty. */
struct ipa_ref *first_reference (void)
{
- if (!vec_safe_length (references))
+ if (!references.length ())
return NULL;
- return &(*references)[0];
+ return &references[0];
}
/* Return first referring ref in list or NULL if empty. */
@@ -121,20 +120,20 @@ public:
void clear (void)
{
referring.create (0);
- references = NULL;
+ references.create (0);
}
/* Return number of references. */
unsigned int nreferences (void)
{
- return vec_safe_length (references);
+ return references.length ();
}
/* Store actual references in references vector. */
- vec<ipa_ref_t, va_gc> *references;
+ vec<ipa_ref_t, va_heap, vl_ptr> references;
/* Referring is vector of pointers to references. It must not live in GGC space
or GGC will try to mark middle of references vectors. */
- vec<ipa_ref_ptr> GTY((skip)) referring;
+ vec<ipa_ref_t *, va_heap, vl_ptr> referring;
};
#endif /* GCC_IPA_REF_H */