https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82524
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> --- If I diff the combine dumps before/after this commit, the difference is: -(insn 32 31 33 2 (parallel [ - (set (reg:SI 160) - (ashiftrt:SI (reg:SI 159) - (const_int 8 [0x8]))) - (clobber (reg:CC 17 flags)) - ]) "pr82545.c":16 542 {*ashrsi3_1} -(insn 36 35 37 2 (parallel [ - (set (reg:SI 164) - (ashiftrt:SI (reg:SI 163) - (const_int 8 [0x8]))) - (clobber (reg:CC 17 flags)) - ]) "pr82545.c":16 542 {*ashrsi3_1} -(insn 37 36 38 2 (parallel [ - (set (reg:QI 165) - (plus:QI (subreg:QI (reg:SI 160) 0) - (subreg:QI (reg:SI 164) 0))) - (clobber (reg:CC 17 flags)) - ]) "pr82545.c":27 214 {*addqi_1} -(insn 38 37 39 2 (set (zero_extract:SI (reg/v:SI 135 [ result ]) - (const_int 8 [0x8]) - (const_int 8 [0x8])) - (subreg:SI (reg:QI 165) 0)) "pr82545.c":27 109 {insvsi_1} vs. +(note 32 31 33 2 NOTE_INSN_DELETED) +(note 36 35 37 2 NOTE_INSN_DELETED) +(note 37 36 38 2 NOTE_INSN_DELETED) +(insn 38 37 39 2 (parallel [ + (set (zero_extract:SI (reg/v:SI 135 [ result ]) + (const_int 8 [0x8]) + (const_int 8 [0x8])) + (subreg:SI (plus:QI (subreg:QI (zero_extract:SI (reg:SI 159) + (const_int 8 [0x8]) + (const_int 8 [0x8])) 0) + (subreg:QI (zero_extract:SI (reg:SI 163) + (const_int 8 [0x8]) + (const_int 8 [0x8])) 0)) 0)) + (clobber (reg:CC 17 flags)) + ]) "pr82545.c":27 235 {*addqi_ext_2} which looks fine to me. So there is likely just some later bug.