[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