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