https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69291
--- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> --- It combines (insn 353 352 354 63 (set (reg:CCZ 17 flags) (compare:CCZ (mem/f:SI (plus:SI (reg/v/f:SI 225 [ node ]) (const_int 32 [0x20])) [10 MEM[(struct QtfrNode *)node_14(D)].next_head_exact+0 S4 A32]) (const_int 0 [0]))) regcomp.c:1011 3 {*cmpsi_ccno_1} (expr_list:REG_DEAD (reg/v/f:SI 225 [ node ]) (nil))) (jump_insn 354 353 355 63 (set (pc) (if_then_else (eq (reg:CCZ 17 flags) (const_int 0 [0])) (label_ref 360) (pc))) regcomp.c:1011 635 {*jcc_1} (expr_list:REG_DEAD (reg:CCZ 17 flags) (int_list:REG_BR_PROB 1500 (nil))) else: (insn 357 356 360 64 (set (reg/v:SI 224 [ <retval> ]) (plus:SI (plus:SI (reg/v:SI 160 [ mod_tlen ]) (reg/v:SI 224 [ <retval> ])) (const_int 11 [0xb]))) regcomp.c:1012 214 {*leasi} (expr_list:REG_DEAD (reg/v:SI 160 [ mod_tlen ]) (nil))) then: (insn 363 362 366 65 (set (reg/v:SI 224 [ <retval> ]) (plus:SI (plus:SI (reg/v:SI 160 [ mod_tlen ]) (reg/v:SI 224 [ <retval> ])) (const_int 10 [0xa]))) regcomp.c:1014 214 {*leasi} (expr_list:REG_DEAD (reg/v:SI 160 [ mod_tlen ]) (nil))) into (wtf!): (insn 353 352 842 63 (set (reg:CCZ 17 flags) (compare:CCZ (mem/f:SI (plus:SI (reg/v/f:SI 225 [ node ]) (const_int 32 [0x20])) [10 MEM[(struct QtfrNode *)node_14(D)].next_head_exact+0 S4 A32]) (const_int 0 [0]))) regcomp.c:1011 3 {*cmpsi_ccno_1} (expr_list:REG_DEAD (reg/v/f:SI 225 [ node ]) (nil))) (insn 842 353 843 63 (set (reg:CCZ 17 flags) (compare:CCZ (mem/f:SI (plus:SI (reg/v/f:SI 225 [ node ]) (const_int 32 [0x20])) [10 MEM[(struct QtfrNode *)node_14(D)].next_head_exact+0 S4 A32]) (const_int 0 [0]))) regcomp.c:1012 3 {*cmpsi_ccno_1} (nil)) (insn 843 842 844 63 (set (reg:QI 331) (ne:QI (reg:CCZ 17 flags) (const_int 0 [0]))) regcomp.c:1012 631 {*setcc_qi} (nil)) (insn 844 843 845 63 (set (reg/v:SI 224 [ <retval> ]) (zero_extend:SI (reg:QI 331))) regcomp.c:1012 136 {*zero_extendqisi2} (nil)) (insn 845 844 846 63 (parallel [ (set (reg:SI 332) (plus:SI (reg/v:SI 160 [ mod_tlen ]) (reg/v:SI 224 [ <retval> ]))) (clobber (reg:CC 17 flags)) ]) regcomp.c:1012 218 {*addsi_1} (nil)) (insn 846 845 847 63 (parallel [ (set (reg/v:SI 224 [ <retval> ]) (plus:SI (reg/v:SI 224 [ <retval> ]) (reg:SI 332))) (clobber (reg:CC 17 flags)) ]) regcomp.c:1012 218 {*addsi_1} (nil)) (insn 847 846 366 63 (parallel [ (set (reg/v:SI 224 [ <retval> ]) (plus:SI (reg/v:SI 224 [ <retval> ]) (const_int 10 [0xa]))) (clobber (reg:CC 17 flags)) ]) regcomp.c:1012 218 {*addsi_1} (nil)) where it overwrites 224 with setcc even thouht 224 is needed to compute the original expression.