s390.c (s390_register_info): Don't save fprs for -msoft-float.
authorAndreas Krebbel <krebbel1@de.ibm.com>
Fri, 8 Oct 2004 16:36:09 +0000 (16:36 +0000)
committerUlrich Weigand <uweigand@gcc.gnu.org>
Fri, 8 Oct 2004 16:36:09 +0000 (16:36 +0000)
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

gcc/ChangeLog
gcc/config/s390/s390.c

index 4c4dda6b81aab38a16c8bffe10673b9a53d03b94..5ce51198f3b4ba83bd81161df24b2a63e7d5e621 100644 (file)
@@ -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.
index c2fb505d12d9555821d1cac2371ac6699c311930..1d4d813458b1e080a19e6fa8a894420f44eb88ea 100644 (file)
@@ -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.  */