(fold): Avoid exponential work when simplifying conditional
authorRichard Kenner <kenner@gcc.gnu.org>
Sat, 9 Apr 1994 20:05:15 +0000 (16:05 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Sat, 9 Apr 1994 20:05:15 +0000 (16:05 -0400)
expressions; don't recurse twice if ARG1 is constant.

From-SVN: r7010

gcc/fold-const.c

index 81f7b4f..b3e7e1f 100644 (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);