------- Comment #4 from jakub at gcc dot gnu dot org 2010-03-19 17:35 ------- Ah, I see. We have (insn/f 93 8 94 2 pr43437.c:4 (parallel [ (set/f (mem:SI (pre_dec:SI (reg/f:SI 0 r0)) [0 S4 A32]) (reg:SI 12 r12)) (set/f (mem:SI (pre_dec:SI (reg/f:SI 0 r0)) [0 S4 A32]) (reg:SI 13 r13)) (set/f (mem:SI (pre_dec:SI (reg/f:SI 0 r0)) [0 S4 A32]) (reg:SI 14 r14)) (set/f (mem:SI (pre_dec:SI (reg/f:SI 0 r0)) [0 S4 A32]) (reg:SI 15 r15)) ]) 159 {*score.md:3032} (expr_list:REG_DEAD (reg:SI 15 r15) (expr_list:REG_DEAD (reg:SI 14 r14) (expr_list:REG_DEAD (reg:SI 13 r13) (expr_list:REG_DEAD (reg:SI 12 r12) (nil)))))) and adjust_insn turns that into: (insn/f 93 8 94 2 pr43437.c:4 (parallel [ (set/f (mem:SI (plus:SI (reg/f:SI 54 _frame) (const_int -20 [0xffffffffffffffec])) [0 S4 A32]) (reg:SI 12 r12)) (set/f (mem:SI (plus:SI (reg/f:SI 54 _frame) (const_int -20 [0xffffffffffffffec])) [0 S4 A32]) (reg:SI 13 r13)) (set/f (mem:SI (plus:SI (reg/f:SI 54 _frame) (const_int -20 [0xffffffffffffffec])) [0 S4 A32]) (reg:SI 14 r14)) (set/f (mem:SI (plus:SI (reg/f:SI 54 _frame) (const_int -20 [0xffffffffffffffec])) [0 S4 A32]) (reg:SI 15 r15)) (set (reg/f:SI 0 r0) (plus:SI (reg/f:SI 0 r0) (const_int -4 [0xfffffffffffffffc]))) (set (reg/f:SI 0 r0) (plus:SI (reg/f:SI 0 r0) (const_int -4 [0xfffffffffffffffc]))) (set (reg/f:SI 0 r0) (plus:SI (reg/f:SI 0 r0) (const_int -4 [0xfffffffffffffffc]))) (set (reg/f:SI 0 r0) (plus:SI (reg/f:SI 0 r0) (const_int -4 [0xfffffffffffffffc]))) ]) 159 {*score.md:3032} (expr_list:REG_DEAD (reg:SI 15 r15) (expr_list:REG_DEAD (reg:SI 14 r14) (expr_list:REG_DEAD (reg:SI 13 r13) (expr_list:REG_DEAD (reg:SI 12 r12) (nil)))))) I was assuming more than one autoinc with the same reg doesn't appear in any port, apparently it does. Guess adjust_insn could detect this and merge all the adjustments against the same reg into one.
-- jakub at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |jakub at gcc dot gnu dot org |dot org | Status|NEW |ASSIGNED Last reconfirmed|2010-03-19 15:58:32 |2010-03-19 17:35:01 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43437