diff options
| author | dj <dj@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-05-02 00:53:45 +0000 |
|---|---|---|
| committer | dj <dj@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-05-02 00:53:45 +0000 |
| commit | 7497bc177f3695cd2b8c1a494ca039aefe47c15e (patch) | |
| tree | f02237b045073ac68384cd8f7ab318ce172d5b13 | |
| parent | 18175ea321133c34ea21eaa572e113a426f7702e (diff) | |
| download | ppe42-gcc-7497bc177f3695cd2b8c1a494ca039aefe47c15e.tar.gz ppe42-gcc-7497bc177f3695cd2b8c1a494ca039aefe47c15e.zip | |
* reload.c (find_reloads): Also check that all of a multi-reg
value is in the class.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@66366 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/reload.c | 12 |
2 files changed, 16 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9d3429f2c71..deea69fa20e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-05-01 DJ Delorie <dj@redhat.com> + + * reload.c (find_reloads): Also check that all of a multi-reg + value is in the class. + 2003-05-01 Nathan Sidwell <nathan@codesourcery.com> * scan.h (lineno): Revert the rename here. diff --git a/gcc/reload.c b/gcc/reload.c index bc3c1771d97..5a82d995a2c 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -4346,7 +4346,17 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p) if (regno < FIRST_PSEUDO_REGISTER && TEST_HARD_REG_BIT (reg_class_contents[rld[i].class], regno) && HARD_REGNO_MODE_OK (regno, rld[i].mode)) - rld[i].reg_rtx = dest; + { + int nr = HARD_REGNO_NREGS (regno, rld[i].mode); + int ok = 1, nri; + + for (nri = 1; nri < nr; nri ++) + if (! TEST_HARD_REG_BIT (reg_class_contents[rld[i].class], regno + nri)) + ok = 0; + + if (ok) + rld[i].reg_rtx = dest; + } } return retval; |

