(fold): Avoid exponential work when simplifying conditional

expressions; don't recurse twice if ARG1 is constant.

From-SVN: r7010
This commit is contained in:
Richard Kenner 1994-04-09 16:05:15 -04:00
parent f767bd6ef9
commit 4c64b88406
1 changed files with 2 additions and 1 deletions

View File

@ -3420,7 +3420,8 @@ fold (expr)
tree lhs = fold (build (code, type, true_value, arg1));
tree rhs = fold (build (code, type, false_value, arg1));
if (TREE_CONSTANT (lhs) || TREE_CONSTANT (rhs))
if (TREE_CONSTANT (lhs) || TREE_CONSTANT (rhs)
|| TREE_CONSTANT (arg1))
return fold (build (COND_EXPR, type, test, lhs, rhs));
arg1 = save_expr (arg1);