summaryrefslogtreecommitdiff
path: root/gcc/unroll.c
diff options
context:
space:
mode:
authorm.hayes <m.hayes@138bc75d-0d04-0410-961f-82ee72b054a4>2000-01-19 11:17:13 +0000
committerm.hayes <m.hayes@138bc75d-0d04-0410-961f-82ee72b054a4>2000-01-19 11:17:13 +0000
commitc5aaf45f53d93931fec068df657565d321019c82 (patch)
treebfb4d9d9ee38a783e6b9356016d8465cae06d590 /gcc/unroll.c
parentdd2acd8374435c683ec974b753193dfdd6065a14 (diff)
downloadgcc-c5aaf45f53d93931fec068df657565d321019c82.tar.gz
loop.c
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@31500 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/unroll.c')
-rw-r--r--gcc/unroll.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/gcc/unroll.c b/gcc/unroll.c
index 9225a9c1e9b..b166298653e 100644
--- a/gcc/unroll.c
+++ b/gcc/unroll.c
@@ -3702,10 +3702,14 @@ loop_iterations (loop)
return 0;
}
- /* The only new registers that care created before loop iterations are
- givs made from biv increments, so this should never occur. */
-
- if ((unsigned) REGNO (iteration_var) >= reg_iv_type->num_elements)
+ /* The only new registers that are created before loop iterations
+ are givs made from biv increments or registers created by
+ load_mems. In the latter case, it is possible that try_copy_prop
+ will propagate a new pseudo into the old iteration register but
+ this will be marked by having the REG_USERVAR_P bit set. */
+
+ if ((unsigned) REGNO (iteration_var) >= reg_iv_type->num_elements
+ && ! REG_USERVAR_P (iteration_var))
abort ();
iteration_info (iteration_var, &initial_value, &increment,