On Tue, 2008-02-26 at 12:25 -0700, Jeff Law wrote: > If someone wanted to get real ambitious they could revamp the > REG_POINTER propagation code as well. It's amazingly simplistic > at the moment (see regclass.c:reg_scan_mark_refs). Basically it > fails to propagate for any register destination that is set more > than once, even if all the sets are of the proper form for > propagating REG_POINTER. Do you mean fix it up and then call it from more than just CSE? Currently, the only call to reg_scan() isn't in a location that will help me. Anyway, I took Richard's advice and moved/renamed the new function to emit-rtl.c. How does the new code look? For -O1 compiles, I had to properly order the indexed load/store operands during expand, because we never attempt to fix them up after that (actually, DSE seems to call simplify, and swap_commutative_operands_p() correctly says we should swap the operands, but for some reason I don't understand yet, DSE seems to just throw away that result). HJ, Given the x86/x86_64 issues with the last indexed load/store patch, can you SPEC test this patch to make sure the rtlanal.c change doesn't affect you? Thanks. Peter