diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/reload.c | 4 |
2 files changed, 8 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4ce81e0..15f1932 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-04-28 Martin Koegler <mkoegler@auto.tuwien.ac.at> + + PR rtl-optimization/18877 + * reload.c (decompose) <case REG, case SUBREG>: Handle pseudo reg + number in val.start. + 2005-04-28 David Edelsohn <edelsohn@gnu.org> PR target/20813 diff --git a/gcc/reload.c b/gcc/reload.c index 394a430..9f10321 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -2389,7 +2389,7 @@ decompose (rtx x) case REG: val.reg_flag = 1; val.start = true_regnum (x); - if (val.start < 0) + if (val.start < 0 || val.start >= FIRST_PSEUDO_REGISTER) { /* A pseudo with no hard reg. */ val.start = REGNO (x); @@ -2406,7 +2406,7 @@ decompose (rtx x) return decompose (SUBREG_REG (x)); val.reg_flag = 1; val.start = true_regnum (x); - if (val.start < 0) + if (val.start < 0 || val.start >= FIRST_PSEUDO_REGISTER) return decompose (SUBREG_REG (x)); else /* A hard reg. */ |