The following patch fixes https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82338
The patch was bootstrapped and tested on x86-64. Committed as rev. 253259. Index: ChangeLog =================================================================== --- ChangeLog (revision 253298) +++ ChangeLog (working copy) @@ -1,3 +1,8 @@ +2017-09-29 Vladimir Makarov <vmaka...@redhat.com> + + PR rtl-optimization/82338 + * lra-constraints.c (inherit_in_ebb): Check usage_insns check. + 2017-09-29 Alexander Monakov <amona...@ispras.ru> * genmodes.c (calc_wider_mode): Suppress qsort macro. Index: lra-constraints.c =================================================================== --- lra-constraints.c (revision 253298) +++ lra-constraints.c (working copy) @@ -6219,6 +6219,7 @@ inherit_in_ebb (rtx_insn *head, rtx_insn && ((cheap = XEXP (cheap, 0)), true) && (regno = REGNO (cheap)) >= FIRST_PSEUDO_REGISTER && (hard_regno = reg_renumber[regno]) >= 0 + && usage_insns[regno].check == curr_usage_insns_check /* If there are pending saves/restores, the optimization is not worth. */ && usage_insns[regno].calls_num == calls_num - 1