------- Comment #8 from steven at gcc dot gnu dot org  2010-07-19 19:04 -------
Offending insns that are scheduled in the wrong order:

(insn:TI 28 48 9 2 vector-2.c:7 (set (reg:DI 9 r9 [+8 ])
        (mem/c/i:DI (reg/f:DI 14 r14 [351]) [2 t+8 S8 A64])) 5 {movdi_internal}
(expr_list:REG_DEAD (reg/f:DI 14 r14 [351])
        (nil)))

(insn 9 28 18 2 vector-2.c:5 (set (mem/s/j/c:SI (reg/f:DI 15 r15 [343]) [2 t+4
S4 A32])
        (reg:SI 114 r34 [ a ])) 4 {movsi_internal} (expr_list:REG_DEAD (reg:SI
114 r34 [ a ])
        (expr_list:REG_DEAD (reg/f:DI 15 r15 [343])
            (nil))))


So the MEMs are:
load from "(mem/c/i:DI (reg/f:DI 14 r14 [351]) [2 t+8 S8 A64])"
store to  "(mem/s/j/c:SI (reg/f:DI 15 r15 [343]) [2 t+4 S4 A32])"

There is no dependency of insn 28 on insn 9, even though this is a rather
obvious read-after-write dependency.

;;   ======================================================
;;   -- basic block 2 from 30 to 39 -- after reload
;;   ======================================================

;;   --------------- forward dependences: ------------

;;   --- EBB Dependences --- from bb2 to bb2
;;      insn  code    bb   dep  prio  cost   reservation
;;      ----  ----    --   ---  ----  ----   -----------
;;       30     5     2     0     3     1   2_A : 39 9 36 35
;;       29     5     2     0     2     1   2_A : 39 28 21
;;       35     5     2     1     2     1   2_M_only_um23       : 39 21 9 36
;;       36     5     2     2     1     1   2_M_only_um23       : 39 28 9
;;        9     4     2     3     0     1   2_M_only_um23       : 39
;;       21     5     2     2     1     1   2_M_only_um01       : 39 18 28
;;       28     5     2     3     0     1   2_M_only_um01       : 39 18
;;       18    -1     2     2     0     0   nothing     : 39
;;       39   334     2     8     0     0   2_B :


-- 


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

Reply via email to