diff options
| author | wilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-04-28 20:36:56 +0000 |
|---|---|---|
| committer | wilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-04-28 20:36:56 +0000 |
| commit | 0ed5554eefb0055a4d5d5b5ed2e58fed7bf6b806 (patch) | |
| tree | f8e8997a5dfef683c822f3196b2a81e167c3a825 | |
| parent | f8e976477ab53b06a7cb0edbe59fb6ac7957ee65 (diff) | |
| download | ppe42-gcc-0ed5554eefb0055a4d5d5b5ed2e58fed7bf6b806.tar.gz ppe42-gcc-0ed5554eefb0055a4d5d5b5ed2e58fed7bf6b806.zip | |
Prevent out-of-bounds array access in reload.
PR rtl-optimization/18877
* reload.c (decompose) <case REG, case SUBREG>: Handle pseudo reg
number in val.start.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@98938 138bc75d-0d04-0410-961f-82ee72b054a4
| -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 4ce81e094bf..15f1932b320 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 394a43014b6..9f10321d9c6 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. */ |

