Tue Apr 18 14:16:47 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+ * stmt.c (mark_case_node): New function.
+ (mark_case_nesting): Call it.
+
* expmed.c (emit_store_flag): If comparing two-word integer
with zero, can optimize NE, EQ, GE, and LT.
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 *));
\f
{
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