aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndreas Krebbel <krebbel@linux.ibm.com>2020-03-04 13:29:39 +0100
committerAndreas Krebbel <krebbel@linux.ibm.com>2020-03-04 13:52:28 +0100
commit14cb388b743ba1222da261926d3b0934d695deb2 (patch)
treeaf9c2072e65a3631d348c8e71f4ac2085e7b5513 /gcc
parent0993851dc131608a49da294a9ca7dd102df349ab (diff)
downloadgcc-14cb388b743ba1222da261926d3b0934d695deb2.zip
gcc-14cb388b743ba1222da261926d3b0934d695deb2.tar.gz
gcc-14cb388b743ba1222da261926d3b0934d695deb2.tar.bz2
IBM Z: zTPF: Prevent FPR usage
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.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/s390/s390.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index 31af842..ae2be36 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -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