On Fri, 2016-09-16 at 14:40 -0600, Jeff Law wrote:
> On 09/08/2016 06:30 PM, David Malcolm wrote:
> > gcc/ChangeLog:
> >     * combine.c: Include selftest.h and selftest-rtl.h.
> >     (try_combine): Add assertion on this_basic_block.
> >     (class selftest::combine_test): New subclass of
> >     selftest::tl_dump_test.
> >     (selftest::combine_test::combine_test): New ctor.
> >     (selftest::test_combining_shifts): New function.
> >     (selftest::test_non_combinable_shifts): New function.
> >     (selftest::combine_c_tests): New function.
> >     * selftest-run-tests.c (selftest::run_tests): Run
> >     selftest::combine_c_tests.
> >     * selftest.h (selftest::combine_c_tests): New decl.
> > diff --git a/gcc/combine.c b/gcc/combine.c
> > index 1b262f9..9c148bb 100644
> > --- a/gcc/combine.c
> > +++ b/gcc/combine.c
> > @@ -2625,6 +2627,8 @@ try_combine (rtx_insn *i3, rtx_insn *i2,
> > rtx_insn *i1, rtx_insn *i0,
> >    rtx new_other_notes;
> >    int i;
> > 
> > +  gcc_assert (this_basic_block);
> Presumably when you set up the self test the first time this was NULL
> :-)

Indeed :)

> > +
> > +/* combine_test's constructor.  Write DUMP_CONTENT to a tempfile
> > and load
> > +   it.  Initialize df and perform dataflow analysis.  */
> > +
> > +combine_test::combine_test (const char *dump_content,
> > +                       int dumped_first_pseudo_regno)
> > +: rtl_dump_test (dump_content, dumped_first_pseudo_regno),
> > +  m_df_test ()
> > +{
> > +  /* The dataflow instance should have been created by m_df_test's
> > ctor.  */
> > +  gcc_assert (df);
> > +
> > +  /* From rest_of_handle_combine.  */
> > +  df_set_flags (/*DF_LR_RUN_DCE + */ DF_DEFER_INSN_RESCAN);
> > +  df_note_add_problem ();
> > +  df_analyze ();
> > +}
> So rather than taking a string (which is a pain to construct), then 
> writing it out to a file, then reading it in, what's wrong with
> having 
> RTL fragments in a file?
> 

I plan to rework these fixtures so that they can accept both string
fragments and filenames.

Reply via email to