diff options
author | Doug Evans <dje@seba.cygnus.com> | 1997-08-27 16:43:23 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1997-08-27 10:43:23 -0600 |
commit | 88016fb7ef61bcc40b7cf8b1d6c6511a8896f594 (patch) | |
tree | 944ee8d1d31c76cbfb94bdc0f34a28a931ceb050 /gcc/loop.c | |
parent | 33d2808ba7921908568d9b6d992d1626a3c6c840 (diff) | |
download | gcc-88016fb7ef61bcc40b7cf8b1d6c6511a8896f594.zip gcc-88016fb7ef61bcc40b7cf8b1d6c6511a8896f594.tar.gz gcc-88016fb7ef61bcc40b7cf8b1d6c6511a8896f594.tar.bz2 |
loop.c (combine_movables): Earlier insns don't match later ones.
* loop.c (combine_movables): Earlier insns don't match later ones.
Brought over from the fsf.
From-SVN: r14966
Diffstat (limited to 'gcc/loop.c')
-rw-r--r-- | gcc/loop.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -1342,7 +1342,9 @@ combine_movables (movables, nregs) bzero (matched_regs, nregs); matched_regs[regno] = 1; - for (m1 = movables; m1; m1 = m1->next) + /* We want later insns to match the first one. Don't make the first + one match any later ones. So start this loop at m->next. */ + for (m1 = m->next; m1; m1 = m1->next) if (m != m1 && m1->match == 0 && n_times_used[m1->regno] == 1 /* A reg used outside the loop mustn't be eliminated. */ && !m1->global |