Hi, I got a dump of sha.c.27.flow2 from gcc 3.4.1. I don't quite understand the LOG_LINKS of insn 498. LOG_LINKS in insn 498 shows that it has a data dependence (a read after write dependence) with insn 3. Why is it so? I don't see any dependence between "mov r14 r4" and "addi r3, r4, 28". The bottom is the whole dump of the basic block.
(insn 3 4 11 0 (set (reg/v/f:SI 14 r14 [orig:46 sha_info ] [46]) (reg:SI 4 r4 [ sha_info ])) 8 {movsi_internal} (nil) (expr_list:REG_DEAD (reg:SI 4 r4 [ sha_info ]) (nil))) ........ (insn 498 375 560 0 (set (reg/f:SI 3 r3 [235]) (plus:SI (reg/v/f:SI 14 r14 [orig:46 sha_info ] [46]) (const_int 28 [0x1c]))) 20 {addsi3} (insn_list 3 (nil)) (nil)) ;; Start of basic block 0, registers live: 4 [r4] 16 [r16] 17 [r17] 18 [r18] 19 [r19] 27 [sp] 31 [ra] (note 289 2 597 0 [bb 0] NOTE_INSN_BASIC_BLOCK) (insn/f 597 289 598 0 (set:SI (reg/f:SI 27 sp) (plus:SI (reg/f:SI 27 sp) (const_int -336 [0xfffffeb0]))) -1 (nil) (nil)) (insn/f 598 597 599 0 (set:SI (mem:SI (plus:SI (reg/f:SI 27 sp) (const_int 332 [0x14c])) [0 S4 A32]) (reg:SI 16 r16)) -1 (nil) (expr_list:REG_DEAD (reg:SI 16 r16) (nil))) (insn/f 599 598 600 0 (set:SI (mem:SI (plus:SI (reg/f:SI 27 sp) (const_int 328 [0x148])) [0 S4 A32]) (reg:SI 17 r17)) -1 (nil) (expr_list:REG_DEAD (reg:SI 17 r17) (nil))) (insn/f 600 599 601 0 (set:SI (mem:SI (plus:SI (reg/f:SI 27 sp) (const_int 324 [0x144])) [0 S4 A32]) (reg:SI 18 r18)) -1 (nil) (expr_list:REG_DEAD (reg:SI 18 r18) (nil))) (insn/f 601 600 602 0 (set:SI (mem:SI (plus:SI (reg/f:SI 27 sp) (const_int 320 [0x140])) [0 S4 A32]) (reg:SI 19 r19)) -1 (nil) (expr_list:REG_DEAD (reg:SI 19 r19) (nil))) (note 602 601 4 0 NOTE_INSN_PROLOGUE_END) (note 4 602 3 0 NOTE_INSN_FUNCTION_BEG) (insn 3 4 11 0 (set (reg/v/f:SI 14 r14 [orig:46 sha_info ] [46]) (reg:SI 4 r4 [ sha_info ])) 8 {movsi_internal} (nil) (expr_list:REG_DEAD (reg:SI 4 r4 [ sha_info ]) (nil))) (insn 11 3 375 0 (set (reg/v:SI 5 r5 [orig:47 i ] [47]) (const_int 0 [0x0])) 8 {movsi_internal} (nil) (nil)) (insn 375 11 498 0 (set (reg/s:SI 6 r6 [54]) (const_int 15 [0xf])) 8 {movsi_internal} (nil) (expr_list:REG_EQUIV (const_int 15 [0xf]) (nil))) (insn 498 375 560 0 (set (reg/f:SI 3 r3 [235]) (plus:SI (reg/v/f:SI 14 r14 [orig:46 sha_info ] [46]) (const_int 28 [0x1c]))) 20 {addsi3} (insn_list 3 (nil)) (nil)) (insn 560 498 12 0 (set (reg/f:SI 4 r4 [266]) (reg/f:SI 27 sp)) 8 {movsi_internal} (nil) (nil)) ;; End of basic block 0, registers live: 3 [r3] 4 [r4] 5 [r5] 6 [r6] 14 [r14] 27 [sp] 31 [ra] Regards, Haibin