aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Ellcey <sje@cup.hp.com>2007-08-15 20:08:43 +0000
committerSteve Ellcey <sje@gcc.gnu.org>2007-08-15 20:08:43 +0000
commitf81e79b5b4875091d95227d6e13997e3981b9181 (patch)
treeff75b5886e4098fc54e9cc257274e59919c0a3fd
parent336e494f860ab137e0e6f9f916f40aa8ed39af41 (diff)
downloadgcc-f81e79b5b4875091d95227d6e13997e3981b9181.zip
gcc-f81e79b5b4875091d95227d6e13997e3981b9181.tar.gz
gcc-f81e79b5b4875091d95227d6e13997e3981b9181.tar.bz2
re PR target/32963 (ICE in failed_reload, could not find a spill register)
PR target/32963 caller-save.c (reg_save_code): Set invalide status on restore code. From-SVN: r127523
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/caller-save.c2
2 files changed, 7 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f7e3103..f63862a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2007-08-15 Steve Ellcey <sje@cup.hp.com>
+
+ PR target/32963
+ * caller-save.c (reg_save_code): Set invalide status on restore code.
+
2007-08-15 Diego Novillo <dnovillo@google.com>
* tree-ssa-alias.c (compute_memory_partitions): Use
diff --git a/gcc/caller-save.c b/gcc/caller-save.c
index 82672e0..26ac50e 100644
--- a/gcc/caller-save.c
+++ b/gcc/caller-save.c
@@ -113,6 +113,7 @@ reg_save_code (int reg, enum machine_mode mode)
if (!HARD_REGNO_MODE_OK (reg, mode))
{
cached_reg_save_code[reg][mode] = -1;
+ cached_reg_restore_code[reg][mode] = -1;
return -1;
}
@@ -124,6 +125,7 @@ reg_save_code (int reg, enum machine_mode mode)
/* Force re-recognition of the modified insns. */
INSN_CODE (saveinsn) = -1;
+ INSN_CODE (restinsn) = -1;
cached_reg_save_code[reg][mode] = recog_memoized (saveinsn);
cached_reg_restore_code[reg][mode] = recog_memoized (restinsn);