diff options
author | Robin Dapp <rdapp@linux.ibm.com> | 2022-10-18 12:27:37 +0200 |
---|---|---|
committer | Robin Dapp <rdapp@linux.ibm.com> | 2022-10-19 13:00:07 +0200 |
commit | 95c5cffb712d90bfe36f2cf71d3a052b8068db34 (patch) | |
tree | 725c32ba0b1454e36d6ffb9da2212a5dd58cfada /gcc/config/s390 | |
parent | 65b98fc763d14d371fcf37a17e33519012ec2bac (diff) | |
download | gcc-95c5cffb712d90bfe36f2cf71d3a052b8068db34.zip gcc-95c5cffb712d90bfe36f2cf71d3a052b8068db34.tar.gz gcc-95c5cffb712d90bfe36f2cf71d3a052b8068db34.tar.bz2 |
s390: Fix bootstrap error with checking and -m31.
For a while already we hit an ICE when bootstrapping with -m31 and
--enable-checking=all.
../../../../libgfortran/ieee/ieee_helper.c: In function 'ieee_class_helper_16':
../../../../libgfortran/ieee/ieee_helper.c:77:3: internal compiler error: RTL check: expected code 'reg', have 'subreg' in rhs_regno, at rtl.h:1932
77 | }
| ^
../../../../libgfortran/ieee/ieee_helper.c:87:1: note: in expansion of macro 'CLASSMACRO'
87 | CLASSMACRO(16)
| ^~~~~~~~~~
This patch fixes the problem by first checking for reload_completed
and also ensuring that REGNO is only called on reg operands rather
than subregs.
gcc/ChangeLog:
* config/s390/s390.md: Move reload_completed and check operands for REG_P.
Diffstat (limited to 'gcc/config/s390')
-rw-r--r-- | gcc/config/s390/s390.md | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md index 962927c..c89b15c 100644 --- a/gcc/config/s390/s390.md +++ b/gcc/config/s390/s390.md @@ -8797,9 +8797,10 @@ (neg:DI (match_operand:DI 1 "register_operand" ""))) (clobber (reg:CC CC_REGNUM))] "!TARGET_ZARCH - && (REGNO (operands[0]) == REGNO (operands[1]) - || s390_split_ok_p (operands[0], operands[1], DImode, 0)) - && reload_completed" + && reload_completed + && ((REG_P (operands[0]) && REG_P (operands[1]) + && REGNO (operands[0]) == REGNO (operands[1])) + || s390_split_ok_p (operands[0], operands[1], DImode, 0))" [(parallel [(set (match_dup 2) (neg:SI (match_dup 3))) (clobber (reg:CC CC_REGNUM))]) |