aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorBernd Schmidt <bernds@redhat.com>2001-03-01 14:04:23 +0000
committerBernd Schmidt <bernds@gcc.gnu.org>2001-03-01 14:04:23 +0000
commit8cb714352c0a6d8ad639a4f72837434295d03bfa (patch)
tree00ac5d791087a030565f851b26b05371d1ed2827 /gcc
parentfbfe8c9e5ab2168a5776947525909c485afe39f3 (diff)
downloadgcc-8cb714352c0a6d8ad639a4f72837434295d03bfa.zip
gcc-8cb714352c0a6d8ad639a4f72837434295d03bfa.tar.gz
gcc-8cb714352c0a6d8ad639a4f72837434295d03bfa.tar.bz2
Fix register renaming problem
From-SVN: r40152
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog3
-rw-r--r--gcc/config/ia64/ia64.c4
2 files changed, 7 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 879827b..0ca9c9b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,8 @@
2001-03-01 Bernd Schmidt <bernds@redhat.com>
+ * config/ia64/ia64.c (ia64_hard_regno_rename_ok): Disallow renaming
+ from reg 4 if current_function_calls_setjmp.
+
* reload1.c (eliminate_regs_in_insn): Restrict the special case
code not to try to optimize adds with anything but a REG destination.
diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c
index 1a4baa0..bfe0d55 100644
--- a/gcc/config/ia64/ia64.c
+++ b/gcc/config/ia64/ia64.c
@@ -2436,6 +2436,10 @@ ia64_hard_regno_rename_ok (from, to)
if (PR_REGNO_P (from) && PR_REGNO_P (to))
return (from & 1) == (to & 1);
+ /* Reg 4 contains the saved gp; we can't reliably rename this. */
+ if (from == GR_REG (4) && current_function_calls_setjmp)
+ return 0;
+
return 1;
}