aboutsummaryrefslogtreecommitdiff
path: root/gcc/stmt.c
diff options
context:
space:
mode:
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>2000-04-18 19:23:53 +0000
committerRichard Kenner <kenner@gcc.gnu.org>2000-04-18 15:23:53 -0400
commit0876ac08ad284ff3d2797e5de3d44b07bfac32fd (patch)
treec6d775da1a4e916270067878e579c20b316426ff /gcc/stmt.c
parent6912b84bf1a10c6bc8c9c337153189a44bdce35f (diff)
downloadgcc-0876ac08ad284ff3d2797e5de3d44b07bfac32fd.zip
gcc-0876ac08ad284ff3d2797e5de3d44b07bfac32fd.tar.gz
gcc-0876ac08ad284ff3d2797e5de3d44b07bfac32fd.tar.bz2
stmt.c (mark_case_node): New function.
* stmt.c (mark_case_node): New function. (mark_case_nesting): Call it. From-SVN: r33231
Diffstat (limited to 'gcc/stmt.c')
-rw-r--r--gcc/stmt.c30
1 files changed, 19 insertions, 11 deletions
diff --git a/gcc/stmt.c b/gcc/stmt.c
index 8516e36..5bad3397 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -430,6 +430,7 @@ static void mark_cond_nesting PARAMS ((struct nesting *));
static void mark_loop_nesting PARAMS ((struct nesting *));
static void mark_block_nesting PARAMS ((struct nesting *));
static void mark_case_nesting PARAMS ((struct nesting *));
+static void mark_case_node PARAMS ((struct case_node *));
static void mark_goto_fixup PARAMS ((struct goto_fixup *));
@@ -509,28 +510,35 @@ mark_case_nesting (n)
{
while (n)
{
- struct case_node *node;
-
ggc_mark_rtx (n->exit_label);
ggc_mark_rtx (n->data.case_stmt.start);
- node = n->data.case_stmt.case_list;
- while (node)
- {
- ggc_mark_tree (node->low);
- ggc_mark_tree (node->high);
- ggc_mark_tree (node->code_label);
- node = node->right;
- }
-
ggc_mark_tree (n->data.case_stmt.default_label);
ggc_mark_tree (n->data.case_stmt.index_expr);
ggc_mark_tree (n->data.case_stmt.nominal_type);
+ mark_case_node (n->data.case_stmt.case_list);
n = n->next;
}
}
+/* Mark C for GC. */
+
+static void
+mark_case_node (c)
+ struct case_node *c;
+{
+ if (c != 0)
+ {
+ ggc_mark_tree (c->low);
+ ggc_mark_tree (c->high);
+ ggc_mark_tree (c->code_label);
+
+ mark_case_node (c->right);
+ mark_case_node (c->left);
+ }
+}
+
/* Mark G for GC. */
static void