http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46391
--- Comment #3 from Roy Rosen <roy.1rosen at gmail dot com> 2010-11-11 08:03:57
UTC ---
It happens also on i386 with ./cc1 -O3 a.c -fdump-rtl-all -funroll-loops
-fsched-verbose=8 -fschedule-insns:
In asmcons:
(insn 16 15 17 4 a.c:5 (set (reg:SI 72 [ vect_var_.26 ])
(mem:SI (plus:SI (reg/v/f:SI 74 [ c ])
(reg:SI 70 [ ivtmp.42 ])) [0 MEM[(char * restrict)vect_p.22]+0
S4 A32])) 50 {*movsi_internal} (nil))
(insn 17 16 134 4 a.c:5 (set (mem:SI (plus:SI (reg/v/f:SI 75 [ d ])
(reg:SI 70 [ ivtmp.42 ])) [0 MEM[(char * restrict)vect_p.27]+0
S4 A32])
(reg:SI 72 [ vect_var_.26 ])) 50 {*movsi_internal} (expr_list:REG_DEAD
(reg:SI 72 [ vect_var_.26 ])
(nil)))
(insn 134 17 135 4 a.c:5 (set (reg:SI 82 [ vect_var_.26 ])
(mem:SI (plus:SI (plus:SI (reg/v/f:SI 74 [ c ])
(reg:SI 70 [ ivtmp.42 ]))
(const_int 4 [0x4])) [0 MEM[(char * restrict)vect_p.22]+0 S4
A32])) 50 {*movsi_internal} (nil))
and in sched1:
;; ======================================================
;; -- basic block 4 from 16 to 198 -- before reload
;; ======================================================
;; --------------- forward dependences: ------------
;; --- Region Dependences --- b 4 bb 0
;; insn code bb dep prio cost reservation
;; ---- ---- -- --- ---- ---- -----------
;; 16 50 4 0 35 4 decodern,p2 : 198 196 195 185
175 165 155 145 135 17
;; 17 50 4 1 31 1 decoder0,(p4+p3) : 198 196 194
184 174 164 154 144 134
;; 134 50 4 1 31 4 decodern,p2 : 198 196 195 185
175 165 155 145 135
;; 135 50 4 2 27 1 decoder0,(p4+p3) : 198 196 194
184 174 164 154 144
There should not be any dependency between 17 (store) and 134 (load).
BTW, I failed building i386 from the current snapshot so I used an old one.
(../../gcc-4.6-20101106/gcc/config/i386/bdver1.md:528: unknown mode `V4DF'
../../gcc-4.6-20101106/gcc/config/i386/bdver1.md:528: following context is `0
"r egister_operand")'
)