From: Mike Stump Date: Thu, 12 Jun 1997 19:23:12 +0000 (+0000) Subject: tree.c (unsave_expr_now): Avoid recursing into the parts of the tree that are RTL. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b96257b6df86d010bb9b2487c09364699b0bbcea;p=gcc.git tree.c (unsave_expr_now): Avoid recursing into the parts of the tree that are RTL. * tree.c (unsave_expr_now): Avoid recursing into the parts of the tree that are RTL. From-SVN: r14230 --- diff --git a/gcc/tree.c b/gcc/tree.c index 5198d2ccde2..4bdfa0053d6 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -2316,15 +2316,18 @@ unsave_expr_now (expr) { enum tree_code code; register int i; + int first_rtl; if (expr == NULL_TREE) return expr; code = TREE_CODE (expr); + first_rtl = tree_code_length [(int) code]; switch (code) { case SAVE_EXPR: SAVE_EXPR_RTL (expr) = 0; + first_rtl = 2; break; case TARGET_EXPR: @@ -2336,6 +2339,7 @@ unsave_expr_now (expr) /* I don't yet know how to emit a sequence multiple times. */ if (RTL_EXPR_SEQUENCE (expr) != 0) abort (); + first_rtl = 0; break; case CALL_EXPR: @@ -2350,6 +2354,16 @@ unsave_expr_now (expr) exp = TREE_CHAIN (exp); } } + first_rtl = 2; + break; + + case WITH_CLEANUP_EXPR: + /* Should be defined to be 2. */ + first_rtl = 1; + break; + + case METHOD_CALL_EXPR: + first_rtl = 3; break; } @@ -2368,7 +2382,7 @@ unsave_expr_now (expr) case '<': /* a comparison expression */ case '2': /* a binary arithmetic expression */ case '1': /* a unary arithmetic expression */ - for (i = tree_code_length[(int) code] - 1; i >= 0; i--) + for (i = first_rtl - 1; i >= 0; i--) unsave_expr_now (TREE_OPERAND (expr, i)); return expr;