diff options
author | Ilya Leoshkevich <iii@linux.ibm.com> | 2020-12-10 15:43:59 +0100 |
---|---|---|
committer | Ilya Leoshkevich <iii@linux.ibm.com> | 2021-03-16 13:57:34 +0100 |
commit | 4073a09e23944b17cd1afce77025b1ea19b28ced (patch) | |
tree | 5d9bb0a528e524c62e227edc69c9995b0c002832 /gcc/ada/gcc-interface/utils.c | |
parent | 995a740cb01a0671a2082cb1ae13d0c356d4b568 (diff) | |
download | gcc-4073a09e23944b17cd1afce77025b1ea19b28ced.zip gcc-4073a09e23944b17cd1afce77025b1ea19b28ced.tar.gz gcc-4073a09e23944b17cd1afce77025b1ea19b28ced.tar.bz2 |
IBM Z: Fix "+fvm" constraint with long doubles
When a long double is passed to an asm statement with a "+fvm"
constraint, a LRA loop occurs. This happens, because LRA chooses the
widest register class in this case (VEC_REGS), but the code generated
by s390_md_asm_adjust() always wants FP_REGS. Mismatching register
classes cause infinite reloading.
Fix by treating "fv" constraints as "v" in s390_md_asm_adjust().
gcc/ChangeLog:
* config/s390/s390.c (f_constraint_p): Treat "fv" constraints
as "v".
gcc/testsuite/ChangeLog:
* gcc.target/s390/vector/long-double-asm-fprvrmem.c: New test.
Diffstat (limited to 'gcc/ada/gcc-interface/utils.c')
0 files changed, 0 insertions, 0 deletions