On Fri, 2016-09-16 at 14:34 -0600, Jeff Law wrote:
> On 09/08/2016 06:30 PM, David Malcolm wrote:
> > gcc/ChangeLog:
> >     * df-core.c: Include selftest.h and selftest-rtl.h.
> >     (selftest::dataflow_test::dataflow_test): New ctor.
> >     (selftest::dataflow_test::~dataflow_test): New dtor.
> >     (selftest::test_df_single_set): New function.
> >     (selftest::df_core_c_tests): New function.
> >     * selftest-run-tests.c (selftest::run_tests): Call it.
> >     * selftest.h (selftest::df_core_c_tests): New decl.
> > ---
> >  gcc/df-core.c            | 77
> > ++++++++++++++++++++++++++++++++++++++++++++++++
> >  gcc/selftest-run-tests.c |  1 +
> >  gcc/selftest.h           |  1 +
> >  3 files changed, 79 insertions(+)
> > 
> > diff --git a/gcc/df-core.c b/gcc/df-core.c
> > index e531d58..cb8e2f9 100644
> > --- a/gcc/df-core.c
> > +++ b/gcc/df-core.c
> > @@ -384,6 +384,8 @@ are write-only operations.
> >  #include "cfganal.h"
> >  #include "tree-pass.h"
> >  #include "cfgloop.h"
> > +#include "selftest.h"
> > +#include "selftest-rtl.h"
> > 
> >  static void *df_get_bb_info (struct dataflow *, unsigned int);
> >  static void df_set_bb_info (struct dataflow *, unsigned int, void
> > *);
> > @@ -2482,3 +2484,78 @@ debug_df_chain (struct df_link *link)
> >    df_chain_dump (link, stderr);
> >    fputc ('\n', stderr);
> >  }
> > +
> > +#if CHECKING_P
> > +
> > +namespace selftest {
> > +
> > +/* dataflow_test's constructor.  Initialize df.  */
> > +
> > +dataflow_test::dataflow_test ()
> > +{
> > +  rest_of_handle_df_initialize ();
> > +}
> > +
> > +/* dataflow_test's destructor.  Clean up df.  */
> > +
> > +dataflow_test::~dataflow_test ()
> > +{
> > +  rest_of_handle_df_finish ();
> > +}
> > +
> > +/* Verify df_note on a trivial function.  */
> > +
> > +void
> > +test_df_single_set ()
> > +{
> > +  const char *input_dump
> > +    = "(insn 1 0 0 2 (set (reg:SI 100) (reg:SI 101)) -1 (nil))\n";
> > +  rtl_dump_test t (input_dump, 100);
> > +  //print_rtl_with_bb (stdout, get_insns (), 1024);
> Obviously this call to pritn_rtl_with_bb should disappear...
> 
> 
> > +
> > +  dataflow_test dftest;
> > +
> > +  df_note_add_problem ();
> > +  df_analyze ();
> > +  //df_dump (stderr);
> ANd this call to df_dump.
> 
> > +
> > +  ASSERT_EQ (SET_SRC (PATTERN (insn)), note0->element ());
> > +  ASSERT_EQ (REG_DEAD, REG_NOTE_KIND (note0));
> > +
> > +  ASSERT_EQ (SET_DEST (PATTERN (insn)), note1->element ());
> > +  ASSERT_EQ (REG_UNUSED, REG_NOTE_KIND (note1));
> I don't think the ordering of the notes is guaranteed.
> 
> Like the other RTL test I've looked at, I'd be real curious to know
> if 
> you get any uninitialized memory reads if you run this test under
> valgrind.

FWIW there don't seem to be any.

Reply via email to