On Mon, 19 Nov 2012 18:31:27 -0800, Lawrence Crowl wrote: > Richi, ping?
Just guessing... isn't he simply out on Honeymoon? Those functions were introduced to handle alias sets for spill slots better, but IIRC this never worked properly. The whole path through dse_step2_spill is dead. The code was introduced on the DF-branch with this patch: http://gcc.gnu.org/ml/gcc-patches/2007-04/msg00216.html. Its purpose was to make aliasing transparent for spill slots created by a never posted pre-spiller pass (i.e. spill before register allocation to reduce register pressure). The idea was that pre-spilled pseudos could be promoted back to registers, and the associated stack slots eliminated, if register pressure turned out to be low enough that the pre-spilling was unnecessary. But even on the DF-branch before the merge) this code never worked properly and the whole approach was abandoned, see ChangeLog.dataflow: * dse.c (replace_inc_dec, delete_dead_store_insn, scan_insn, dse_record_singleton_alias_set, dse_confluence_0, dse_confluence_n, step4, step5_nospill, step5_spill, rest_of_handle_dse, pass_rtl_dse1, pass_rtl_dse2): Removed code to allow dse to run on trunk in front of flow.c (problem): Removed. I would go ahead and eliminate this clear_alias_sets and all related code, and commit that patch as obvious (or after Diego has given it his blessing). In fact, the complete pass_rtl_dse2 pass may be useless now, perhaps that's something you could look into also, while at it? Thanks for all the C++ and other compiler long-term structural improvements!!! Ciao! Steven