re PR tree-optimization/26854 (Inordinate compile times on large routines)

PR tree-optimization/26854
	* tree-ssa-dse.c (dse_optimize_stmt): Avoid num_imm_uses when
	checking for zero or one use.
	* tree-ssa-dom.c (propagate_rhs_into_lhs): Similarly.
	* tree-cfgcleanup.c (merge_phi_nodes): Similarly.
	* tree-ssa-reassoc.c (negate_value): Similarly.
	(reassociate_bb): Similarly.

From-SVN: r113120
This commit is contained in:
Jeff Law 2006-04-20 10:13:12 -06:00 committed by Jeff Law
parent 45c792f50b
commit bfc646bfc0
5 changed files with 15 additions and 6 deletions

View File

@ -1,3 +1,13 @@
2006-04-20 Jeff Law <law@redhat.com>
PR tree-optimization/26854
* tree-ssa-dse.c (dse_optimize_stmt): Avoid num_imm_uses when
checking for zero or one use.
* tree-ssa-dom.c (propagate_rhs_into_lhs): Similarly.
* tree-cfgcleanup.c (merge_phi_nodes): Similarly.
* tree-ssa-reassoc.c (negate_value): Similarly.
(reassociate_bb): Similarly.
2006-04-20 Jakub Jelinek <jakub@redhat.com>
* c-pretty-print.c (pp_c_direct_abstract_declarator): Print

View File

@ -765,13 +765,12 @@ merge_phi_nodes (void)
for (phi = phi_nodes (bb); phi; phi = PHI_CHAIN (phi))
{
tree result = PHI_RESULT (phi);
int num_uses = num_imm_uses (result);
use_operand_p imm_use;
tree use_stmt;
/* If the PHI's result is never used, then we can just
ignore it. */
if (num_uses == 0)
if (has_zero_uses (result))
continue;
/* Get the single use of the result of this PHI node. */

View File

@ -2318,7 +2318,7 @@ propagate_rhs_into_lhs (tree stmt, tree lhs, tree rhs, bitmap interesting_names)
The maximum number of times we can re-execute the loop is
bounded by the maximum number of times a given SSA_NAME
appears in a single statement. */
if (all && num_imm_uses (lhs) != 0)
if (all && !has_zero_uses (lhs))
goto repeat;
/* If we were able to propagate away all uses of LHS, then

View File

@ -269,7 +269,7 @@ dse_optimize_stmt (struct dom_walk_data *walk_data,
/* If this virtual def does not have precisely one use, then
we will not be able to eliminate STMT. */
if (num_imm_uses (defvar) != 1)
if (! has_single_use (defvar))
{
fail = true;
break;

View File

@ -1032,7 +1032,7 @@ negate_value (tree tonegate, block_stmt_iterator *bsi)
if (TREE_CODE (tonegate) == SSA_NAME
&& TREE_CODE (negatedef) == MODIFY_EXPR
&& TREE_CODE (TREE_OPERAND (negatedef, 0)) == SSA_NAME
&& num_imm_uses (TREE_OPERAND (negatedef, 0)) == 1
&& has_single_use (TREE_OPERAND (negatedef, 0))
&& TREE_CODE (TREE_OPERAND (negatedef, 1)) == PLUS_EXPR)
{
block_stmt_iterator bsi;
@ -1331,7 +1331,7 @@ reassociate_bb (basic_block bb)
/* There may be no immediate uses left by the time we
get here because we may have eliminated them all. */
if (TREE_CODE (lhs) == SSA_NAME && num_imm_uses (lhs) == 0)
if (TREE_CODE (lhs) == SSA_NAME && has_zero_uses (lhs))
continue;
TREE_VISITED (stmt) = 1;