aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeoffrey Keating <geoffk@apple.com>2004-01-16 07:28:11 +0000
committerGeoffrey Keating <geoffk@apple.com>2004-01-16 07:28:11 +0000
commit0bcd149108d9a1a05aa46bf9281535d461ba4005 (patch)
treefb0803546a9062f4ca3b67f849d9857280108725
parent6baf48db4c91bbbc6069bcd4adf4d271208340da (diff)
PR pch/13689
* alias.c (struct alias_set_entry): Mark for GC. (alias_sets): Make static, mark for GC. (record_alias_subset): Use GC to allocate alias structures. * varray.c (element): Make generic varrays GCed. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@75962 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/alias.c13
-rw-r--r--gcc/varray.c6
3 files changed, 16 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 35f3b982131..adc7d9bd8b7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2004-01-15 Geoffrey Keating <geoffk@apple.com>
+ PR pch/13689
+ * alias.c (struct alias_set_entry): Mark for GC.
+ (alias_sets): Make static, mark for GC.
+ (record_alias_subset): Use GC to allocate alias structures.
+ * varray.c (element): Make generic varrays GCed.
+
PR pch/13361
* c-typeck.c (constructor_asmspec): Delete.
(struct initializer_stack): Delete field 'asmspec'.
diff --git a/gcc/alias.c b/gcc/alias.c
index f1975cead5b..a56feae1170 100644
--- a/gcc/alias.c
+++ b/gcc/alias.c
@@ -74,7 +74,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
However, this is no actual entry for alias set zero. It is an
error to attempt to explicitly construct a subset of zero. */
-typedef struct alias_set_entry
+struct alias_set_entry GTY(())
{
/* The alias set number, as stored in MEM_ALIAS_SET. */
HOST_WIDE_INT alias_set;
@@ -86,12 +86,13 @@ typedef struct alias_set_entry
continuing our example above, the children here will be all of
`int', `double', `float', and `struct S'. */
- splay_tree children;
+ splay_tree GTY((param1_is (int), param2_is (int))) children;
/* Nonzero if would have a child of zero: this effectively makes this
alias set the same as alias set zero. */
int has_zero_child;
-} *alias_set_entry;
+};
+typedef struct alias_set_entry *alias_set_entry;
static int rtx_equal_for_memref_p (rtx, rtx);
static rtx find_symbolic_term (rtx);
@@ -206,7 +207,7 @@ char *reg_known_equiv_p;
static bool copying_arguments;
/* The splay-tree used to store the various alias set entries. */
-varray_type alias_sets;
+static GTY ((param_is (struct alias_set_entry))) varray_type alias_sets;
/* Returns a pointer to the alias set entry for ALIAS_SET, if there is
such an entry, or NULL otherwise. */
@@ -640,10 +641,10 @@ record_alias_subset (HOST_WIDE_INT superset, HOST_WIDE_INT subset)
{
/* Create an entry for the SUPERSET, so that we have a place to
attach the SUBSET. */
- superset_entry = xmalloc (sizeof (struct alias_set_entry));
+ superset_entry = ggc_alloc (sizeof (struct alias_set_entry));
superset_entry->alias_set = superset;
superset_entry->children
- = splay_tree_new (splay_tree_compare_ints, 0, 0);
+ = splay_tree_new_ggc (splay_tree_compare_ints);
superset_entry->has_zero_child = 0;
VARRAY_GENERIC_PTR (alias_sets, superset) = superset_entry;
}
diff --git a/gcc/varray.c b/gcc/varray.c
index b748d438e9a..dd4640d5d77 100644
--- a/gcc/varray.c
+++ b/gcc/varray.c
@@ -30,8 +30,8 @@
#define VARRAY_HDR_SIZE (sizeof (struct varray_head_tag) - sizeof (varray_data))
-/* Do not add any more non-GC items here. Please either remove or GC those items that
- are not GCed. */
+/* Do not add any more non-GC items here. Please either remove or GC
+ those items that are not GCed. */
static const struct {
unsigned char size;
@@ -47,7 +47,7 @@ static const struct {
{ sizeof (unsigned long), 1 },
{ sizeof (HOST_WIDE_INT), 1 },
{ sizeof (unsigned HOST_WIDE_INT), 1 },
- { sizeof (void *), 0 },
+ { sizeof (void *), 1 },
{ sizeof (char *), 1 },
{ sizeof (struct rtx_def *), 1 },
{ sizeof (struct rtvec_def *), 1 },