https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70014
Bug ID: 70014 Summary: [ARM] Predicate does not match constraint (*subsi3_carryin_const) Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: michael.collison at linaro dot org Target Milestone: --- The predicate of operand 1 of the "*subsi3_carryin_const" pattern: (define_insn "*subsi3_carryin_const" [(set (match_operand:SI 0 "s_register_operand" "=r") (minus:SI (plus:SI (match_operand:SI 1 "reg_or_int_operand" "r") (match_operand:SI 2 "arm_not_operand" "K")) (ltu:SI (reg:CC_C CC_REGNUM) (const_int 0))))] allows for const_int but the constraint only allows for registers. The solution is to change the predicate to disallow const_int operands. I will post a patch upstream after testing is complete.