------- Comment #13 from rguenth at gcc dot gnu dot org  2008-02-01 13:04 
-------
gcse-after-reload inserts

(insn 66 30 31 3 (set (reg:SF 1 dx [+4 ])
        (mem/c:SF (plus:SI (reg/f:SI 6 bp)
                (const_int -16 [0xfffffffffffffff0])) [0 res$imag+0 S4 A]

on the edge from bb3 to bb4, which looks correct.  This insn vanishes during
184r.dse2:

DCE: Deleting insn 66
deleting insn with uid = 66.


One problem may be that gcse doesn't update LIFE:

...
(insn 30 60 66 3 test-cacoshf.c:13 (parallel [
            (asm_operands/v ("") ("") 0 []
                 [] 1606)
            (clobber (reg:QI 18 fpsr))
            (clobber (reg:QI 17 flags))
            (clobber (reg:QI 5 di))
            (clobber (reg:QI 4 si))
            (clobber (reg:QI 3 bx))
            (clobber (reg:QI 2 cx))
        ]) -1 (nil))

(insn 66 30 31 3 (set (reg:SF 1 dx [+4 ])
        (mem/c:SF (plus:SI (reg/f:SI 6 bp)
                (const_int -16 [0xfffffffffffffff0])) [0 res$imag+0 S4 A8])) -1
(nil))
;; End of basic block 3 -> ( 4)
;; lr  out       6 [bp] 7 [sp] 9 [st(1)] 20 [frame]


lr out doesn't include dx.  Is gcse supposed to update lr out?


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35045

Reply via email to