diff options
author | Michael Hayes <m.hayes@elec.canterbury.ac.nz> | 2000-01-19 11:17:13 +0000 |
---|---|---|
committer | Michael Hayes <m.hayes@gcc.gnu.org> | 2000-01-19 11:17:13 +0000 |
commit | e4b68cedfd8fe2d9c380f701d8add1fec4c2532f (patch) | |
tree | bfb4d9d9ee38a783e6b9356016d8465cae06d590 | |
parent | d29c259b715bb5873c1b9ecf5af5ce06132a3377 (diff) | |
download | gcc-e4b68cedfd8fe2d9c380f701d8add1fec4c2532f.zip gcc-e4b68cedfd8fe2d9c380f701d8add1fec4c2532f.tar.gz gcc-e4b68cedfd8fe2d9c380f701d8add1fec4c2532f.tar.bz2 |
loop.c
From-SVN: r31500
-rw-r--r-- | gcc/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/unroll.c | 12 |
2 files changed, 19 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 50211e6..0317a03 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2000-01-20 Michael Hayes <m.hayes@elec.canterbury.ac.nz> + + * loop.c (current_loop_info): Renamed from loop_info_data + and changed to a pointer. + (loop_optimize): Allocate loop_info structure for each loop + and initialise to zero. + (scan_loop): Set current_loop_info. + + * unroll.c (loop_iterations): Don't abort if REG_USERVAR_P set + on iteration_var. + 2000-01-19 Richard Henderson <rth@cygnus.com> * stupid.c: Die die die. diff --git a/gcc/unroll.c b/gcc/unroll.c index 9225a9c..b166298 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, |