> From: Alexandre Oliva <aol...@redhat.com> > Date: Sat, 31 Dec 2011 20:57:24 +0100
> * cselib.h (cselib_add_permanent_equiv): Declare. > (canonical_cselib_val): New. > * cselib.c (new_elt_loc_list): Rework to support value > equivalences. Adjust all callers. > (preserve_only_constants): Retain value equivalences. > (references_value_p): Retain preserved values. > (rtx_equal_for_cselib_1): Handle value equivalences. > (cselib_invalidate_regno): Use canonical value. > (cselib_add_permanent_equiv): New. > * alias.c (find_base_term): Reset locs lists while recursing. > * var-tracking.c (val_bind): New. Don't add equivalences > present in cselib table, compared with code moved from... > (val_store): ... here. > (val_resolve): Use val_bind. > (VAL_EXPR_HAS_REVERSE): Drop. > (add_uses): Do not create MOps for addresses. Do not mark > non-REG non-MEM expressions as requiring resolution. > (reverse_op): Record reverse as a cselib equivalence. > (add_stores): Use it. Do not create MOps for addresses. > Do not require resolution for non-REG non-MEM expressions. > Simplify support for reverse operations. > (compute_bb_dataflow): Drop reverse support. > (emit_notes_in_bb): Likewise. > (create_entry_value): Rename to... > (record_entry_value): ... this. Use cselib equivalences. > (vt_add_function_parameter): Adjust. This (r182760) caused regressions in the libstdc++ testsuite for cris-elf, PR51728. brgds, H-P