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

Reply via email to