gnu/gcc/8bfaf339d53e6cc2d78a36c0014161e55cafbd5a s390: Fix s390_canonicalize_comparison
Combine may come up with insns of the form:
Trying 230 -> 231:
230: %cc:CCZ=unspec[r82:DF,0xfc0]TDC_INSN
231: r83:SI=unspec[%cc:CCZ]CC_TO_INT
REG_DEAD %cc:CCZ
Failed to match this instruction:
(set (reg:SI 83 [ _38 ])
(unspec:SI [
(unspec:CCZ [
(reg:DF 82 [ _37 ])
(const_int 4032 [0xfc0])
] UNSPEC_TDC_INSN)
] UNSPEC_CC_TO_INT))
where the operand for UNSPEC_CC_TO_INT is not a register. Deal with
this during s390_canonicalize_comparison.
While on it canonicalize GET_CODE (x) == REG to REG_P (x).
gcc/ChangeLog:
* config/s390/s390.cc (s390_canonicalize_comparison): Verify op0
for an UNSPEC_CC_TO_INT is a register.
1 file changed