https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79450
Uroš Bizjak <ubizjak at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|target |rtl-optimization --- Comment #2 from Uroš Bizjak <ubizjak at gmail dot com> --- (In reply to Jakub Jelinek from comment #1) > Things go wrong during combine. (insn 34 33 35 4 (set (reg:SI 116 [ p1 ]) (zero_extend:SI (reg/v:QI 96 [ p1 ]))) "pr79450.c":14 134 {*zero_extendqisi2} (expr_list:REG_DEAD (reg/v:QI 96 [ p1 ]) (nil))) (insn 35 34 40 4 (parallel [ (set (reg:SI 115) (plus:SI (reg:SI 116 [ p1 ]) (subreg:SI (reg/v:DI 98 [ p2 ]) 0))) (clobber (reg:CC 17 flags)) ]) "pr79450.c":14 215 {*addsi_1} (expr_list:REG_DEAD (reg:SI 116 [ p1 ]) (expr_list:REG_DEAD (reg/v:DI 98 [ p2 ]) (expr_list:REG_UNUSED (reg:CC 17 flags) (nil))))) combine converts this to: Trying 34 -> 35: Failed to match this instruction: (parallel [ (set (reg:SI 115) (subreg:SI (reg/v:DI 98 [ p2 ]) 0)) (clobber (reg:CC 17 flags)) ]) Successfully matched this instruction: (set (reg:SI 115) (subreg:SI (reg/v:DI 98 [ p2 ]) 0)) allowing combination of insns 34 and 35