Bernd Edlinger wrote:

> Combine creates an invalid insn out of these two insns:

Yes it looks like a latent bug. We need to use arm_general_register_operand
as arm_adddi3/subdi3 only allow integer registers. You don't need a new 
predicate
s_register_operand_nv. Also I'd prefer something like arm_general_adddi_operand.

+  "TARGET_32BIT && ((!TARGET_NEON && !TARGET_IWMMXT) || reload_completed)"

The split condition for adddi3 now looks more accurate indeed, although we could
remove the !TARGET_NEON from the split condition as this is always true given
arm_adddi3 uses "TARGET_32BIT && !TARGET_NEON".

Also there are more cases, a quick grep suggests *anddi_notdi_di has the same 
issue.

Wilco

Reply via email to