Commit b96257b6 by Mike Stump

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
parent f5546425
...@@ -2316,15 +2316,18 @@ unsave_expr_now (expr) ...@@ -2316,15 +2316,18 @@ unsave_expr_now (expr)
{ {
enum tree_code code; enum tree_code code;
register int i; register int i;
int first_rtl;
if (expr == NULL_TREE) if (expr == NULL_TREE)
return expr; return expr;
code = TREE_CODE (expr); code = TREE_CODE (expr);
first_rtl = tree_code_length [(int) code];
switch (code) switch (code)
{ {
case SAVE_EXPR: case SAVE_EXPR:
SAVE_EXPR_RTL (expr) = 0; SAVE_EXPR_RTL (expr) = 0;
first_rtl = 2;
break; break;
case TARGET_EXPR: case TARGET_EXPR:
...@@ -2336,6 +2339,7 @@ unsave_expr_now (expr) ...@@ -2336,6 +2339,7 @@ unsave_expr_now (expr)
/* I don't yet know how to emit a sequence multiple times. */ /* I don't yet know how to emit a sequence multiple times. */
if (RTL_EXPR_SEQUENCE (expr) != 0) if (RTL_EXPR_SEQUENCE (expr) != 0)
abort (); abort ();
first_rtl = 0;
break; break;
case CALL_EXPR: case CALL_EXPR:
...@@ -2350,6 +2354,16 @@ unsave_expr_now (expr) ...@@ -2350,6 +2354,16 @@ unsave_expr_now (expr)
exp = TREE_CHAIN (exp); 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; break;
} }
...@@ -2368,7 +2382,7 @@ unsave_expr_now (expr) ...@@ -2368,7 +2382,7 @@ unsave_expr_now (expr)
case '<': /* a comparison expression */ case '<': /* a comparison expression */
case '2': /* a binary arithmetic expression */ case '2': /* a binary arithmetic expression */
case '1': /* a unary 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)); unsave_expr_now (TREE_OPERAND (expr, i));
return expr; return expr;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment