diff options
author | David S. Miller <davem@pierdol.cobaltmicro.com> | 1998-08-25 00:37:12 +0000 |
---|---|---|
committer | David S. Miller <davem@gcc.gnu.org> | 1998-08-24 17:37:12 -0700 |
commit | dd0208b9cdb5bb441baaaf18fb4fc6ec55d94a38 (patch) | |
tree | 989b0f689c2788b417e9da82d2f1be0b73b89c2f /gcc | |
parent | dce2e8c098ab361dd55940ce75ed653fadffc690 (diff) | |
download | gcc-dd0208b9cdb5bb441baaaf18fb4fc6ec55d94a38.zip gcc-dd0208b9cdb5bb441baaaf18fb4fc6ec55d94a38.tar.gz gcc-dd0208b9cdb5bb441baaaf18fb4fc6ec55d94a38.tar.bz2 |
loop.c (scan_loop): Allocate some slop to handle pseudos generated by move_movables.
* loop.c (scan_loop): Allocate some slop to handle pseudos
generated by move_movables.
(load_mems_and_recount_loop_regs_set): Honor AVOID_CC_MODE_COPIES
here too.
From-SVN: r21955
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/loop.c | 12 |
2 files changed, 17 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f14ad3e..98e2b53 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +Mon Aug 24 23:31:03 1998 David S. Miller <davem@pierdol.cobaltmicro.com> + + * loop.c (scan_loop): Allocate some slop to handle pseudos + generated by move_movables. + (load_mems_and_recount_loop_regs_set): Honor AVOID_CC_MODE_COPIES + here too. + Mon Aug 24 19:45:40 1998 Jim Wilson <wilson@cygnus.com> * tree.def (DECL_RESULT): Correct documentation. @@ -762,8 +762,8 @@ scan_loop (loop_start, end, unroll_p) reg_single_usage[I]. */ /* Allocate extra space for REGS that might be created by - load_mems. */ - nregs = max_reg_num () + loop_mems_idx; + load_mems and move_movables. */ + nregs = max_reg_num () + loop_mems_idx + 100; n_times_set = (int *) alloca (nregs * sizeof (int)); n_times_used = (int *) alloca (nregs * sizeof (int)); may_not_optimize = (char *) alloca (nregs); @@ -8443,6 +8443,14 @@ load_mems_and_recount_loop_regs_set (scan_start, end, loop_top, start, for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) may_not_optimize[i] = 1, n_times_set[i] = 1; +#ifdef AVOID_CCMODE_COPIES + /* Don't try to move insns which set CC registers if we should not + create CCmode register copies. */ + for (i = FIRST_PSEUDO_REGISTER; i < nregs - loop_mems_idx; i++) + if (GET_MODE_CLASS (GET_MODE (regno_reg_rtx[i])) == MODE_CC) + may_not_optimize[i] = 1; +#endif + /* Set n_times_used for the new registers. */ bcopy ((char *) (n_times_set + old_nregs), (char *) (n_times_used + old_nregs), |