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.

Reply via email to