From 572ae4769aebdf9e2ca738674f698f2a4b3347cd Mon Sep 17 00:00:00 2001 From: Changpeng Fang Date: Thu, 4 Mar 2010 12:12:50 +0000 Subject: Fix PR43209: Do not decrease the cost of an IV candidate when the cost is infinite. 2010-03-03 Changpeng Fang PR middle-end/43209 * tree-ssa-loop-ivopts.c (determine_use_iv_cost_condition): Do not decrease the cost of an IV candidate when the cost is infinite. * gcc.dg/tree-ssa/ivopts-4.c: New. From-SVN: r157217 --- gcc/tree-ssa-loop-ivopts.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'gcc/tree-ssa-loop-ivopts.c') diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c index 74dadf77897..e6565dbdf99 100644 --- a/gcc/tree-ssa-loop-ivopts.c +++ b/gcc/tree-ssa-loop-ivopts.c @@ -1,5 +1,5 @@ /* Induction variable optimizations. - Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 + Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GCC. @@ -4121,7 +4121,8 @@ determine_use_iv_cost_condition (struct ivopts_data *data, TODO: The constant that we're substracting from the cost should be target-dependent. This information should be added to the target costs for each backend. */ - if (integer_zerop (*bound_cst) + if (!infinite_cost_p (elim_cost) /* Do not try to decrease infinite! */ + && integer_zerop (*bound_cst) && (operand_equal_p (*control_var, cand->var_after, 0) || operand_equal_p (*control_var, cand->var_before, 0))) elim_cost.cost -= 1; -- cgit v1.2.1