From: Richard Kenner Date: Tue, 18 Apr 2000 19:23:53 +0000 (+0000) Subject: stmt.c (mark_case_node): New function. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0876ac08ad284ff3d2797e5de3d44b07bfac32fd;p=gcc.git stmt.c (mark_case_node): New function. * stmt.c (mark_case_node): New function. (mark_case_nesting): Call it. From-SVN: r33231 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d9eb7c4b0c3..b1f0c335cb7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ Tue Apr 18 14:16:47 2000 Richard Kenner + * 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. diff --git a/gcc/stmt.c b/gcc/stmt.c index 8516e368964..5bad3397eb2 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