Index: ChangeLog =================================================================== --- ChangeLog (revision 267853) +++ ChangeLog (working copy) @@ -1,3 +1,10 @@ +2019-01-11 Vladimir Makarov + + PR rtl-optimization/87305 + * lra-assigns.c + (setup_live_pseudos_and_spill_after_risky_transforms): Add code + for little endian pseudos used as paradoxical subreg. + 2019-01-11 Jakub Jelinek PR tree-optimization/88693 Index: lra-assigns.c =================================================================== --- lra-assigns.c (revision 267849) +++ lra-assigns.c (working copy) @@ -1174,10 +1174,14 @@ setup_live_pseudos_and_spill_after_risky - hard_regno_nregs (hard_regno, PSEUDO_REGNO_MODE (i))); enum reg_class rclass = lra_get_allocno_class (i); - if (WORDS_BIG_ENDIAN - && (hard_regno - nregs_diff < 0 - || !TEST_HARD_REG_BIT (reg_class_contents[rclass], - hard_regno - nregs_diff))) + if ((WORDS_BIG_ENDIAN + && (hard_regno - nregs_diff < 0 + || !TEST_HARD_REG_BIT (reg_class_contents[rclass], + hard_regno - nregs_diff))) + || (!WORDS_BIG_ENDIAN + && (hard_regno + nregs_diff >= FIRST_PSEUDO_REGISTER + || !TEST_HARD_REG_BIT (reg_class_contents[rclass], + hard_regno + nregs_diff)))) { /* Hard registers of paradoxical sub-registers are out of range of pseudo register class. Spill the pseudo. */