https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120811
--- Comment #9 from Jeffrey A. Law <law at gcc dot gnu.org> --- Costing should prevent mvconst_internal from causing problems in this case. >From the compiler's current cost model mvconst_internal+add has the same cost as addi+addi. So there's no reason for combine to replace two addi insns with a mvconst_internal+add. We do need to remove the sum of two s12 define_insn_and_split since that definitely looks like a profitable replacement for two addi instrutions. That's the biggest concern with this path -- we need to make sure that there aren't unintended consequences from removing that pattern. I don't expect any, but we need to be sure.