[Bug target/93002] while(i--) optimization
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Dec 19 09:54:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93002
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
The peephole2, if we go that way, would need to change something like:
(insn 8 7 10 3 (parallel [
(set (reg/v:SI 0 ax [orig:82 i ] [82])
(plus:SI (reg/v:SI 0 ax [orig:82 i ] [82])
(const_int -1 [0xffffffffffffffff])))
(clobber (reg:CC 17 flags))
]) "pr93002-2.c":7:11 185 {*addsi_1}
(expr_list:REG_UNUSED (reg:CC 17 flags)
(nil)))
(insn 10 8 11 3 (set (reg:CCZ 17 flags)
(compare:CCZ (reg/v:SI 0 ax [orig:82 i ] [82])
(const_int -1 [0xffffffffffffffff]))) "pr93002-2.c":7:9 11
{*cmpsi_1}
(nil))
(jump_insn 11 10 22 3 (set (pc)
(if_then_else (ne (reg:CCZ 17 flags)
(const_int 0 [0]))
(label_ref:DI 9)
(pc))) "pr93002-2.c":7:9 708 {*jcc}
(expr_list:REG_DEAD (reg:CCZ 17 flags)
(int_list:REG_BR_PROB 1063004412 (nil)))
-> 9)
into:
(insn 8 7 11 3 (parallel [
(set (reg:CCC 17 flags)
(compare:CCC (plus:SI (reg/v:SI 0 ax [orig:82 i ] [82])
(const_int -1 [0xffffffffffffffff]))
(const_int -1 [0xffffffffffffffff])))
(set (reg/v:SI 0 ax [orig:82 i ] [82])
(plus:SI (reg/v:SI 0 ax [orig:82 i ] [82])
(const_int -1 [0xffffffffffffffff]))))
]) "pr93002-2.c":7:11 ...)
(jump_insn 11 8 22 3 (set (pc)
(if_then_else (eq (reg:CCC 17 flags)
(const_int 0 [0]))
(label_ref:DI 9)
(pc))) "pr93002-2.c":7:9 708 {*jcc}
(expr_list:REG_DEAD (reg:CCZ 17 flags)
(int_list:REG_BR_PROB 1063004412 (nil)))
-> 9)
More information about the Gcc-bugs
mailing list