------- Comment #3 from gunnar at greyhound-data dot com 2008-06-12 14:34 ------- Andreas,
What is your opinion to this? GCC 2.9 used to combine the move with increment in the combine step to something like this: *** (insn 32 30 33 (set (reg/v:SI 32) (mem:SI (post_inc:SI (reg/v:SI 34)) 0)) 42 {movsi+1} (nil) (expr_list:REG_INC (reg/v:SI 34) (nil))) *** So problem is that now GCC seems not to be able to do this anymore by itself With GCC 4.4 the output is: ** (insn 34 33 35 4 example2.c:11 (set (reg/v:SI 54 [ value ]) (mem:SI (reg/v/f:SI 52 [ src ]) [2 S4 A16])) 37 {*movsi_cf} (nil)) (insn 35 34 36 4 example2.c:12 (set (reg/v:SI 53 [ value2 ]) (mem:SI (plus:SI (reg/v/f:SI 52 [ src ]) (const_int 4 [0x4])) [2 S4 A16])) 37 {*movsi_cf} (nil)) (insn 36 35 38 4 example2.c:5 (set (reg/v/f:SI 52 [ src ]) (plus:SI (reg/v/f:SI 52 [ src ]) (const_int 8 [0x8]))) 133 {*addsi3_5200} (nil)) (insn 38 36 40 4 example2.c:10 (set (reg/v:SI 50 [ size.21 ]) (plus:SI (reg/v:SI 50 [ size.21 ]) (const_int -1 [0xffffffff]))) 133 {*addsi3_5200} (nil)) *** Any ideas about this? Kind regards Gunnar von Boehn -- gunnar at greyhound-data dot com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |schwab at suse dot de http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36135