aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorRobin Dapp <rdapp@linux.ibm.com>2022-10-18 12:27:37 +0200
committerRobin Dapp <rdapp@linux.ibm.com>2022-10-19 13:00:07 +0200
commit95c5cffb712d90bfe36f2cf71d3a052b8068db34 (patch)
tree725c32ba0b1454e36d6ffb9da2212a5dd58cfada /gcc/config
parent65b98fc763d14d371fcf37a17e33519012ec2bac (diff)
downloadgcc-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')
-rw-r--r--gcc/config/s390/s390.md7
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))])