aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurynas Biveinis <laurynas.biveinis@gmail.com>2007-07-23 16:32:02 +0000
committerLaurynas Biveinis <laurynas.biveinis@gmail.com>2007-07-23 16:32:02 +0000
commit929cff1b805ed3246823ac1c49d992996015abb1 (patch)
tree05aa78bcfd4a03262da0dd1060f8b69ac014deaf
parent47e81efb192b9fb7e8bdbe3df202cb11f673da62 (diff)
GTYify c-typeck.c
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/boehms-gc@126851 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/c-config-lang.in2
-rw-r--r--gcc/c-tree.h2
-rw-r--r--gcc/c-typeck.c43
-rw-r--r--gcc/objc/config-lang.in2
4 files changed, 27 insertions, 22 deletions
diff --git a/gcc/c-config-lang.in b/gcc/c-config-lang.in
index 01fe1d02936..1acba9bb157 100644
--- a/gcc/c-config-lang.in
+++ b/gcc/c-config-lang.in
@@ -23,4 +23,4 @@
# files used by C that have garbage collection GTY macros in them
# which therefore need to be scanned by gengtype.c.
-gtfiles="\$(srcdir)/c-lang.c \$(srcdir)/c-tree.h \$(srcdir)/c-decl.c \$(srcdir)/c-common.c \$(srcdir)/c-common.h \$(srcdir)/c-pragma.c \$(srcdir)/c-objc-common.c \$(srcdir)/c-parser.c"
+gtfiles="\$(srcdir)/c-lang.c \$(srcdir)/c-tree.h \$(srcdir)/c-decl.c \$(srcdir)/c-common.c \$(srcdir)/c-common.h \$(srcdir)/c-pragma.c \$(srcdir)/c-objc-common.c \$(srcdir)/c-parser.c \$(srcdir)/c-typeck.c"
diff --git a/gcc/c-tree.h b/gcc/c-tree.h
index 3503c793a23..74be5d469dd 100644
--- a/gcc/c-tree.h
+++ b/gcc/c-tree.h
@@ -148,7 +148,7 @@ struct lang_type GTY(())
/* Record parser information about an expression that is irrelevant
for code generation alongside a tree representing its value. */
-struct c_expr
+struct c_expr GTY(())
{
/* The value of the expression. */
tree value;
diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c
index c2f62231412..31a07e1d388 100644
--- a/gcc/c-typeck.c
+++ b/gcc/c-typeck.c
@@ -4322,22 +4322,22 @@ store_init_value (tree decl, tree init)
/* Implement a spelling stack that allows components of a name to be pushed
and popped. Each element on the stack is this structure. */
-struct spelling
+struct spelling GTY(())
{
int kind;
- union
+ union u_u
{
- unsigned HOST_WIDE_INT i;
- const char *s;
- } u;
+ unsigned HOST_WIDE_INT GTY((tag ("0"))) i;
+ const char * GTY((tag ("1"))) s;
+ } GTY((desc("(%1.kind != SPELLING_BOUNDS)"))) u;
};
#define SPELLING_STRING 1
#define SPELLING_MEMBER 2
#define SPELLING_BOUNDS 3
-static struct spelling *spelling; /* Next stack element (unused). */
-static struct spelling *spelling_base; /* Spelling stack base. */
+static GTY(()) struct spelling *spelling; /* Next stack element (unused). */
+static GTY(()) struct spelling *spelling_base; /* Spelling stack base. */
static int spelling_size; /* Size of the spelling stack. */
/* Macros to save and restore the spelling stack around push_... functions.
@@ -4803,9 +4803,10 @@ static int constructor_erroneous;
/* Structure for managing pending initializer elements, organized as an
AVL tree. */
-struct init_node
+struct init_node GTY(())
{
- struct init_node *left, *right;
+ struct init_node *left;
+ struct init_node *right;
struct init_node *parent;
int balance;
tree purpose;
@@ -4817,7 +4818,7 @@ struct init_node
which belong at places we haven't reached yet in actually
writing the output.
Will never hold tree nodes across GC runs. */
-static struct init_node *constructor_pending_elts;
+static GTY(()) struct init_node *constructor_pending_elts;
/* The SPELLING_DEPTH of this constructor. */
static int constructor_depth;
@@ -4846,7 +4847,7 @@ static int designator_erroneous;
struct constructor_range_stack;
-struct constructor_stack
+struct constructor_stack GTY((chain_next("%h.next")))
{
struct constructor_stack *next;
tree type;
@@ -4873,14 +4874,15 @@ struct constructor_stack
char designated;
};
-static struct constructor_stack *constructor_stack;
+static GTY(()) struct constructor_stack *constructor_stack;
/* This stack represents designators from some range designator up to
the last designator in the list. */
-struct constructor_range_stack
+struct constructor_range_stack GTY((chain_next ("%h.next"), chain_prev ("%h.prev")))
{
- struct constructor_range_stack *next, *prev;
+ struct constructor_range_stack *next;
+ struct constructor_range_stack *prev;
struct constructor_stack *stack;
tree range_start;
tree index;
@@ -4888,13 +4890,13 @@ struct constructor_range_stack
tree fields;
};
-static struct constructor_range_stack *constructor_range_stack;
+static GTY(()) struct constructor_range_stack *constructor_range_stack;
/* This stack records separate initializers that are nested.
Nested initializers can't happen in ANSI C, but GNU C allows them
in cases like { ... (struct foo) { ... } ... }. */
-struct initializer_stack
+struct initializer_stack GTY((chain_next ("%h.next")))
{
struct initializer_stack *next;
tree decl;
@@ -4909,7 +4911,7 @@ struct initializer_stack
char require_constant_elements;
};
-static struct initializer_stack *initializer_stack;
+static GTY(()) struct initializer_stack *initializer_stack;
/* Prepare to parse and output the initializer for variable DECL. */
@@ -5538,7 +5540,7 @@ push_range_stack (tree range_end)
{
struct constructor_range_stack *p;
- p = GGC_NEW (struct constructor_range_stack);
+ p = ggc_alloc_constructor_range_stack();
p->prev = constructor_range_stack;
p->next = 0;
p->fields = constructor_fields;
@@ -5703,7 +5705,7 @@ add_pending_init (tree purpose, tree value)
}
}
- r = GGC_NEW (struct init_node);
+ r = ggc_alloc_init_node();
r->purpose = purpose;
r->value = value;
@@ -8719,3 +8721,6 @@ c_finish_omp_clauses (tree clauses)
bitmap_obstack_release (NULL);
return clauses;
}
+
+#include "ggc-internal.h"
+#include "gt-c-typeck.h"
diff --git a/gcc/objc/config-lang.in b/gcc/objc/config-lang.in
index f5224bf89ff..0bcf169d646 100644
--- a/gcc/objc/config-lang.in
+++ b/gcc/objc/config-lang.in
@@ -37,4 +37,4 @@ target_libs=target-libobjc
# Most of the object files for cc1obj actually come from C.
lang_requires="c"
-gtfiles="\$(srcdir)/objc/objc-act.h \$(srcdir)/c-parser.c \$(srcdir)/c-tree.h \$(srcdir)/c-decl.c \$(srcdir)/c-objc-common.c \$(srcdir)/c-common.c \$(srcdir)/c-common.h \$(srcdir)/c-pragma.c \$(srcdir)/objc/objc-act.c"
+gtfiles="\$(srcdir)/objc/objc-act.h \$(srcdir)/c-parser.c \$(srcdir)/c-tree.h \$(srcdir)/c-decl.c \$(srcdir)/c-objc-common.c \$(srcdir)/c-common.c \$(srcdir)/c-common.h \$(srcdir)/c-pragma.c \$(srcdir)/objc/objc-act.c \$(srcdir)/c-typeck.c"