diff options
author | Andreas Krebbel <krebbel1@de.ibm.com> | 2004-10-08 16:36:09 +0000 |
---|---|---|
committer | Ulrich Weigand <uweigand@gcc.gnu.org> | 2004-10-08 16:36:09 +0000 |
commit | 8a512b77f30c239fb467ba5d32e08c09b8b8cf3a (patch) | |
tree | b82bb91fb09ceb97f207a7c28e24b483d89f6d31 /gcc | |
parent | 064e93c2c84363cbaaeda1104f7227515517099c (diff) | |
download | gcc-8a512b77f30c239fb467ba5d32e08c09b8b8cf3a.zip gcc-8a512b77f30c239fb467ba5d32e08c09b8b8cf3a.tar.gz gcc-8a512b77f30c239fb467ba5d32e08c09b8b8cf3a.tar.bz2 |
s390.c (s390_register_info): Don't save fprs for -msoft-float.
2004-10-08 Andreas Krebbel <krebbel1@de.ibm.com>
* config/s390/s390.c (s390_register_info): Don't save fprs for
-msoft-float.
(s390_conditional_register_usage): Make fprs 'fixed' for -msoft-float.
From-SVN: r88764
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/s390/s390.c | 11 |
2 files changed, 15 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4c4dda6..5ce5119 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-10-08 Andreas Krebbel <krebbel1@de.ibm.com> + + * config/s390/s390.c (s390_register_info): Don't save fprs for + -msoft-float. + (s390_conditional_register_usage): Make fprs 'fixed' for -msoft-float. + 2004-10-08 Ulrich Weigand <uweigand@de.ibm.com> * config/s390/s390.h (TARGET_DEFAULT_BACKCHAIN): New define. diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c index c2fb505..1d4d813 100644 --- a/gcc/config/s390/s390.c +++ b/gcc/config/s390/s390.c @@ -6219,8 +6219,9 @@ s390_register_info (int live_regs[]) cfun_frame_layout.last_save_gpr = 6; /* Mark f0, f2 for 31 bit and f0-f4 for 64 bit to be saved. */ - for (i = 0; i < (TARGET_64BIT ? 4 : 2); i++) - cfun_set_fpr_bit (i); + if (TARGET_HARD_FLOAT) + for (i = 0; i < (TARGET_64BIT ? 4 : 2); i++) + cfun_set_fpr_bit (i); } if (!TARGET_64BIT) @@ -8403,6 +8404,12 @@ s390_conditional_register_usage (void) for (i = 18; i < 20; i++) call_used_regs[i] = call_really_used_regs[i] = 0; } + + if (TARGET_SOFT_FLOAT) + { + for (i = 16; i < 32; i++) + call_used_regs[i] = fixed_regs[i] = 1; + } } /* Corresponding function to eh_return expander. */ |