re PR middle-end/12454 (large number of if ();else if cause)

PR middle-end/12454
	* cp-gimplify.c (gimplify_if_stmt): Optimize the case where the
	condition is a constant and the unexecuted clause is empty.

From-SVN: r92067
This commit is contained in:
Roger Sayle 2004-12-12 22:33:00 +00:00 committed by Roger Sayle
parent d9f235fcf8
commit eeae0768ac
2 changed files with 14 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2004-12-12 Roger Sayle <roger@eyesopen.com>
PR middle-end/12454
* cp-gimplify.c (gimplify_if_stmt): Optimize the case where the
condition is a constant and the unexecuted clause is empty.
2004-12-10 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
PR c++/18731

View File

@ -85,9 +85,10 @@ genericize_eh_spec_block (tree *stmt_p)
static void
gimplify_if_stmt (tree *stmt_p)
{
tree stmt, then_, else_;
tree stmt, cond, then_, else_;
stmt = *stmt_p;
cond = IF_COND (stmt);
then_ = THEN_CLAUSE (stmt);
else_ = ELSE_CLAUSE (stmt);
@ -96,7 +97,12 @@ gimplify_if_stmt (tree *stmt_p)
if (!else_)
else_ = build_empty_stmt ();
stmt = build3 (COND_EXPR, void_type_node, IF_COND (stmt), then_, else_);
if (integer_nonzerop (cond) && !TREE_SIDE_EFFECTS (else_))
stmt = then_;
else if (integer_zerop (cond) && !TREE_SIDE_EFFECTS (then_))
stmt = else_;
else
stmt = build3 (COND_EXPR, void_type_node, cond, then_, else_);
*stmt_p = stmt;
}