aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStan Cox <scox@cygnus.com>1999-07-23 22:07:21 +0000
committerStan Cox <scox@cygnus.com>1999-07-23 22:07:21 +0000
commitcfac234729e03d1be370b509edcd83bd622d800e (patch)
tree789172f4668d286bf2cb36d266b2cbbec246cef9
parent87415da8d5a8cb305414c8ff55b7e22c13d6b348 (diff)
* loop.c (check_decr_loop): Put bl->initial_value in canonical form.
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/new_ia32_branch@28229 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog.P24
-rw-r--r--gcc/loop.c14
2 files changed, 14 insertions, 4 deletions
diff --git a/gcc/ChangeLog.P2 b/gcc/ChangeLog.P2
index 08753998329..50262073253 100644
--- a/gcc/ChangeLog.P2
+++ b/gcc/ChangeLog.P2
@@ -1,3 +1,7 @@
+1999-07-19 Stan Cox <scox@cygnus.com>
+
+ * loop.c (check_decr_loop): Put bl->initial_value in canonical form.
+
1999-07-19 Jan Hubicka <hubicka@freesoft.cz>
* i386.c (k6_cost): Tune parameters
diff --git a/gcc/loop.c b/gcc/loop.c
index 9cad581e737..4f1846e6d8d 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -8910,10 +8910,16 @@ check_decr_loop (loop_end, insn_count, loop_start, loop_info)
}
else
{
- bl->initial_value =
- gen_rtx_MINUS (GET_MODE (bl->biv->dest_reg),
- bl->initial_value,
- loop_info->final_value);
+ int dummy;
+ rtx ext_val_dummy;
+
+ bl->initial_value = simplify_giv_expr
+ (gen_rtx_MINUS (GET_MODE (bl->biv->dest_reg),
+ bl->initial_value,
+ loop_info->final_value),
+ &ext_val_dummy, &dummy);
+ if (GET_CODE (bl->initial_value) == USE)
+ bl->initial_value = XEXP (bl->initial_value, 0);
}
insn = gen_move_insn (bl->biv->dest_reg, bl->initial_value);