IBM Z: zTPF: Prevent FPR usage
authorAndreas Krebbel <krebbel@linux.ibm.com>
Wed, 4 Mar 2020 12:29:39 +0000 (13:29 +0100)
committerAndreas Krebbel <krebbel@linux.ibm.com>
Wed, 4 Mar 2020 12:52:28 +0000 (13:52 +0100)
For the zTPF we must not use floating point registers.

gcc/ChangeLog:

2020-03-04  Andreas Krebbel  <krebbel@linux.ibm.com>

* config/s390/s390.c (s390_secondary_memory_needed): Disallow
direct FPR-GPR copies.
(s390_register_info_gprtofpr): Disallow GPR content to be saved in
FPRs.

gcc/config/s390/s390.c

index 31af842eb352610fceb7bbbf9e47ce2291c6b355..ae2be36e65d1ec4663a4dd805726810b060265cc 100644 (file)
@@ -4647,7 +4647,8 @@ s390_secondary_memory_needed (machine_mode mode,
            && reg_classes_intersect_p (class2, GENERAL_REGS))
           || (reg_classes_intersect_p (class1, GENERAL_REGS)
               && reg_classes_intersect_p (class2, VEC_REGS)))
-         && (!TARGET_DFP || !TARGET_64BIT || GET_MODE_SIZE (mode) != 8)
+         && (TARGET_TPF || !TARGET_DFP || !TARGET_64BIT
+             || GET_MODE_SIZE (mode) != 8)
          && (!TARGET_VX || (SCALAR_FLOAT_MODE_P (mode)
                             && GET_MODE_SIZE (mode) > 8)));
 }
@@ -9554,7 +9555,7 @@ s390_register_info_gprtofpr ()
   int save_reg_slot = FPR0_REGNUM;
   int i, j;
 
-  if (!TARGET_Z10 || !TARGET_HARD_FLOAT || !crtl->is_leaf)
+  if (TARGET_TPF || !TARGET_Z10 || !TARGET_HARD_FLOAT || !crtl->is_leaf)
     return;
 
   /* builtin_eh_return needs to be able to modify the return address