[Sorry, pressed the wrong key combination again for the other mail... ]

On Friday 14 October 2005 01:41, Evan Cheng wrote:
> gcc produces the following code:

You're not giving enough information for me to reproduce it.  I used
"-O2 -march=i686 -dAP" for the follow annotated assembler output:
#(insn:TI 126 125 40 (parallel [
#            (set (reg:SI 0 ax [71])
#                (minus:SI (reg:SI 0 ax [71])
#                    (reg:SI 5 di)))
#            (clobber (reg:CC 17 flags))
#        ]) 242 {*subsi_1} (insn_list:REG_DEP_TRUE 125 (insn_list:REG_DEP_TRUE 
37 (nil)))
#    (expr_list:REG_DEAD (reg:SI 5 di)
#        (expr_list:REG_UNUSED (reg:CC 17 flags)
#            (nil))))
        subl    %edi, %eax      # 126   *subsi_1/1      [length = 2]
#(insn:TI 40 126 41 (set (reg:CC 17 flags)
#        (compare:CC (reg:SI 0 ax [71])
#            (const_int 0 [0x0]))) 5 {*cmpsi_1_insn} (insn_list:REG_DEP_TRUE 
126 (nil))
#    (expr_list:REG_DEAD (reg:SI 0 ax [71])
#        (nil)))
        cmpl    $0, %eax        # 40    *cmpsi_1_insn/1 [length = 3]

> The cmpl is not needed because subl has already set the flags.

And as you already noticed, we don't actually model that in this case.


> My question is: where and how would you suggest we do this
> optimization.

combine.
> With peephole2?

You'd get an explosion of peephole patterns.

Gr.
Steven

Reply via email to