[Bug rtl-optimization/80343] [7 Regression] ICE in extract_constrain_insn, at recog.c:2213 (error: insn does not satisfy its constraints)
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Apr 7 15:23:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80343
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2017-04-07
CC| |jakub at gcc dot gnu.org,
| |vmakarov at gcc dot gnu.org
Ever confirmed|0 |1
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Doesn't fail with additional -mno-lra.
The insn in question is:
(define_insn "and<mode>3_imm"
[(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
(and:GPR (match_operand:GPR 1 "gpc_reg_operand" "%r")
(match_operand:GPR 2 "logical_const_operand" "n")))
(clobber (match_scratch:CC 3 "=x"))]
"rs6000_gen_cell_microcode
&& !rs6000_is_valid_and_mask (operands[2], <MODE>mode)"
"andi%e2. %0,%1,%u2"
[(set_attr "type" "logical")
(set_attr "dot" "yes")])
where "x" constraint is:
(define_register_constraint "x" "CR0_REGS"
"@internal")
In *.ira we have:
(insn 84 75 78 6 (parallel [
(set (reg:SI 330 [239])
(and:SI (reg/v:SI 199 [ gt ])
(const_int 5 [0x5])))
(clobber (scratch:CC))
]) "pr80343.c":21 165 {andsi3_imm}
(nil))
and -mno-lra reload turns it into:
(insn 84 75 78 6 (parallel [
(set (reg:SI 16 16 [239])
(and:SI (reg/v:SI 31 31 [orig:199 gt ] [199])
(const_int 5 [0x5])))
(clobber (reg:CC 68 0))
]) "pr80343.c":21 165 {andsi3_imm}
(nil))
But LRA turns it into:
(insn 333 328 308 8 (parallel [
(set (reg:SI 15 15 [263])
(and:SI (reg/v:SI 31 31 [orig:199 gt ] [199])
(const_int 5 [0x5])))
(clobber (scratch:CC))
]) "pr80343.c":21 165 {andsi3_imm}
(nil))
- note the SCRATCH in there instead of (reg:CC 68), so it fails the RTL
checking at the end of LRA.
More information about the Gcc-bugs
mailing list