https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55212
--- Comment #70 from Kazumoto Kojima <kkojima at gcc dot gnu.org> --- I'd like to apply the revised patches below to sh-lra branch for looking at the problems easily. Oleg, is it OK for you? c#55: Fixup the result of decompose_mem_address when INDEX_REG_CLASS is a single register class. c#59: Introduce target hook which disables the substitution of pseudos with equivalent memory values. c#61: Define SH specific HARD_REGNO_CALLER_SAVE_MODE target macro. c#66: Make *addsi3_compact insn_and_split and add an alternative which will split to (set a c) and (set (plus a b)) after reload. I omit c#29 patch which touches lra-constraints.c and may impact on other targets. That patch would make it hard to compare with other targets. c#55 and c#59 also touch lra-constraints.c but those changes unlikely impact on other targets. Fortunately the test case c#28 doesn't ICE anymore without c#29.