aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Krebbel <krebbel1@de.ibm.com>2004-10-08 16:36:09 +0000
committerUlrich Weigand <uweigand@gcc.gnu.org>2004-10-08 16:36:09 +0000
commit8a512b77f30c239fb467ba5d32e08c09b8b8cf3a (patch)
treeb82bb91fb09ceb97f207a7c28e24b483d89f6d31
parent064e93c2c84363cbaaeda1104f7227515517099c (diff)
downloadgcc-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
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/s390/s390.c11
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. */