aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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. */