[patch][df] RFC: Separate DF_REF flags for REG_EQUAL and REG_EQUIV notes
Steven Bosscher
stevenb.gcc@gmail.com
Sat Dec 8 17:55:00 GMT 2007
On Dec 4, 2007 8:47 PM, Paolo Bonzini <paolo.bonzini@lu.unisi.ch> wrote:
>
> > Does this look reasonable (for GCC 4.4 after testing etc.)?
>
> Yes, maybe even for 4.3 after testing etc.
Yes please, that would be convenient.
Bootstrapped and tested on i686-pc-cygwin, including your comments from below.
OK for trunk?
Gr.
Steven
> I would make DF_REF_IN_NOTE
> an enum though, and here:
>
> ! loc = &XEXP (note, 0);
>
> I would add an "gcc_assert (note)" just before. This nearby comment
> also needs updating:
>
> /* Do not replace an existing REG_EQUAL note if the insn is not
> recognized. Either we're already replacing in the note, or
> we'll separately try plugging the definition in the note and
> simplifying. */
>
>
>
> Paolo
>
* df.h (DF_REF_IN_NOTE): Replace with DF_REF_IN_EQUAL_NOTE and
DF_REF_IN_EQUIV_NOTE. Update all other flags. Make DF_REF_IN_NOTE
a define.
* df-scan.c (df_notes_rescan): Split the REG_EQUAL and REG_EQUIV
cases. Add the appropriate DF_REF_IN_ flag.
(df_insn_refs_collect): Likewise.
* fwprop.c (try_fwprop_subst): Call update_df with the proper
DF_REF_IN_ flag (always DF_REF_IN_EQUAL_NOTE).
(forward_propagate_and_simplify): Only pick up note values from
REG_EQUAL notes. Use DF_REF_IN_EQUAL_NOTE to detect this, avoid
calling dinf_reg_note. Simplify.
(forward_propagate_into): Only pick up a pattern from REG_EQUAL notes,
ignore REG_EQUIV notes.
* ddg.c (add_cross_iteration_register_deps): Update comment.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: df_separate_equal_equiv_flag.diff
Type: text/x-patch
Size: 10418 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20071208/ba414959/attachment.bin>
More information about the Gcc-patches
mailing list