From bbda30a4aae700f963fd164edbeac4f4688bf2a0 Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Mon, 21 Jul 2003 18:52:38 +0200 Subject: re PR rtl-optimization/11536 ([strength-reduce] -O2 optimalization produces wrong code) PR optimization/11536 * unroll.c (loop_iterations): Do not replace a register holding the final value by its equivalent before the loop if it is not invariant. PR optimization/11536 * gcc.dg/20030721-1.c: New test. From-SVN: r69635 --- gcc/unroll.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gcc/unroll.c') diff --git a/gcc/unroll.c b/gcc/unroll.c index 62b8152..1c66b13 100644 --- a/gcc/unroll.c +++ b/gcc/unroll.c @@ -3618,7 +3618,7 @@ loop_iterations (struct loop *loop) if (find_common_reg_term (temp, reg2)) initial_value = temp; - else + else if (loop_invariant_p (loop, reg2)) { /* Find what reg2 is equivalent to. Hopefully it will either be reg1 or reg1 plus a constant. Let's ignore -- cgit v1.1