diff options
author | Richard Guenther <rguenther@suse.de> | 2006-04-17 13:53:19 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2006-04-17 13:53:19 +0000 |
commit | 71a9b19ae81bcf0d3674649af4ce0c0926310eac (patch) | |
tree | 932bdb247f1b575456479d3812fafb03e3879d08 /gcc | |
parent | b2c0ad4071b5dfd05cc8ca0ac8c6aa1aee9c9d54 (diff) | |
download | gcc-71a9b19ae81bcf0d3674649af4ce0c0926310eac.zip gcc-71a9b19ae81bcf0d3674649af4ce0c0926310eac.tar.gz gcc-71a9b19ae81bcf0d3674649af4ce0c0926310eac.tar.bz2 |
re PR target/26826 (ICE in reg_or_subregno, at jump.c:2011)
2006-04-17 Richard Guenther <rguenther@suse.de>
PR target/26826
* reload.c (push_reload): Guard calls to get_secondary_mem
for memory subregs.
From-SVN: r113007
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/reload.c | 8 |
2 files changed, 12 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4f39d98..af150ff 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2006-04-17 Richard Guenther <rguenther@suse.de> + + PR target/26826 + * reload.c (push_reload): Guard calls to get_secondary_mem + for memory subregs. + 2006-04-16 Kazu Hirata <kazu@codesourcery.com> * alias.c (reg_base_value, old_reg_base_value): Change the diff --git a/gcc/reload.c b/gcc/reload.c index 8a76c0e..e7798b9 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -1286,7 +1286,9 @@ push_reload (rtx in, rtx out, rtx *inloc, rtx *outloc, #ifdef SECONDARY_MEMORY_NEEDED /* If a memory location is needed for the copy, make one. */ - if (in != 0 && (REG_P (in) || GET_CODE (in) == SUBREG) + if (in != 0 + && (REG_P (in) + || (GET_CODE (in) == SUBREG && REG_P (SUBREG_REG (in)))) && reg_or_subregno (in) < FIRST_PSEUDO_REGISTER && SECONDARY_MEMORY_NEEDED (REGNO_REG_CLASS (reg_or_subregno (in)), class, inmode)) @@ -1316,7 +1318,9 @@ push_reload (rtx in, rtx out, rtx *inloc, rtx *outloc, n_reloads++; #ifdef SECONDARY_MEMORY_NEEDED - if (out != 0 && (REG_P (out) || GET_CODE (out) == SUBREG) + if (out != 0 + && (REG_P (out) + || (GET_CODE (out) == SUBREG && REG_P (SUBREG_REG (out)))) && reg_or_subregno (out) < FIRST_PSEUDO_REGISTER && SECONDARY_MEMORY_NEEDED (class, REGNO_REG_CLASS (reg_or_subregno (out)), |