diff options
author | Ulrich Weigand <uweigand@de.ibm.com> | 2002-04-25 21:26:04 +0000 |
---|---|---|
committer | Ulrich Weigand <uweigand@gcc.gnu.org> | 2002-04-25 21:26:04 +0000 |
commit | cf5ee7207ddb206d1f01b902bb382d402ccdcacb (patch) | |
tree | 2db9a5f1bff91f15d90dabe51b6d7767879fc87b /gcc | |
parent | d604bca36430702c878d4e4cca1e8e0ccee35124 (diff) | |
download | gcc-cf5ee7207ddb206d1f01b902bb382d402ccdcacb.zip gcc-cf5ee7207ddb206d1f01b902bb382d402ccdcacb.tar.gz gcc-cf5ee7207ddb206d1f01b902bb382d402ccdcacb.tar.bz2 |
s390.c (s390_emit_epilogue): Always restore registers needed by the compiler...
* config/s390/s390.c (s390_emit_epilogue): Always restore registers
needed by the compiler, even if they are used as global regs.
From-SVN: r52768
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/s390/s390.c | 8 |
2 files changed, 13 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 855042c..01b2e44 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2002-04-25 Ulrich Weigand <uweigand@de.ibm.com> + + * config/s390/s390.c (s390_emit_epilogue): Always restore registers + needed by the compiler, even if they are used as global regs. + 2002-04-25 Matt Hiller <hiller@redhat.com> * mips.c (mips_class_max_nregs, mips_register_move_cost): New diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c index c052e04..ce51bcf 100644 --- a/gcc/config/s390/s390.c +++ b/gcc/config/s390/s390.c @@ -3255,6 +3255,14 @@ s390_emit_epilogue () i <= frame.last_save_gpr; i++) { + /* These registers are special and need to be + restored in any case. */ + if (i == STACK_POINTER_REGNUM + || i == RETURN_REGNUM + || i == BASE_REGISTER + || (flag_pic && i == PIC_OFFSET_TABLE_REGNUM)) + continue; + if (global_regs[i]) { addr = plus_constant (frame_pointer, |