From 5c7f5a5f556f11be24e728ed044c1f3e06612866 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Thu, 7 Feb 2002 19:36:35 -0800 Subject: [PATCH] loop.c (strength_reduce): Sink final_value when not eliminating a biv. * loop.c (strength_reduce): Sink final_value when not eliminating a biv. From-SVN: r49606 --- gcc/ChangeLog | 5 +++++ gcc/loop.c | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 019a5eccf636..23bde4ae480d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2002-02-07 Richard Henderson + + * loop.c (strength_reduce): Sink final_value when not + eliminating a biv. + 2002-02-07 David O'Brien * config/sparc/freebsd.h: Fix mismatched spec {. diff --git a/gcc/loop.c b/gcc/loop.c index 5c92ec37cf2b..f675a87f0deb 100644 --- a/gcc/loop.c +++ b/gcc/loop.c @@ -5143,6 +5143,11 @@ strength_reduce (loop, flags) fprintf (loop_dump_stream, "Reg %d: biv eliminated\n", bl->regno); } + /* See above note wrt final_value. But since we couldn't eliminate + the biv, we must set the value after the loop instead of before. */ + else if (bl->final_value && ! bl->reversed) + loop_insn_sink (loop, gen_move_insn (bl->biv->dest_reg, + bl->final_value)); } /* Go through all the instructions in the loop, making all the