From: David Malcolm <dmalcolm@redhat.com>
To: gcc-patches@gcc.gnu.org
Cc: David Malcolm <dmalcolm@redhat.com>
Subject: [PATCH 11/16] df selftests (v3)
Date: Wed, 05 Oct 2016 15:44:00 -0000 [thread overview]
Message-ID: <1475684110-2521-12-git-send-email-dmalcolm@redhat.com> (raw)
In-Reply-To: <1475684110-2521-1-git-send-email-dmalcolm@redhat.com>
Changes since v2:
* moved dump from a string literal to an external file
* update for addition of selftest::location to rtl_dump_test
* remove debug prints
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/testsuite/ChangeLog:
* selftests/single-set.rtl: New file.
---
gcc/df-core.c | 73 ++++++++++++++++++++++++++++++++++
gcc/selftest-run-tests.c | 1 +
gcc/selftest.h | 1 +
gcc/testsuite/selftests/single-set.rtl | 5 +++
4 files changed, 80 insertions(+)
create mode 100644 gcc/testsuite/selftests/single-set.rtl
diff --git a/gcc/df-core.c b/gcc/df-core.c
index e531d58..2c8ccba 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,74 @@ 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 ()
+{
+ rtl_dump_test t (SELFTEST_LOCATION, locate_file ("single-set.rtl"));
+
+ dataflow_test dftest;
+
+ df_note_add_problem ();
+ df_analyze ();
+ df_finish_pass (false);
+
+ rtx_insn *insn = get_insn_by_uid (1);
+
+ ASSERT_NE (NULL, REG_NOTES (insn));
+ rtx_expr_list *note0 = as_a <rtx_expr_list *> (REG_NOTES (insn));
+
+ rtx_expr_list *note1 = note0->next ();
+ ASSERT_NE (NULL, note1);
+
+ ASSERT_EQ (NULL, note1->next ());
+
+ 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));
+
+ struct df_lr_bb_info *bb_info = df_lr_get_bb_info (2);
+ ASSERT_NE (NULL, bb_info);
+
+ /* "r100 = r101;" so we should have a use of r101. */
+ ASSERT_FALSE (bitmap_bit_p (&bb_info->use, t.effective_regno (100)));
+ ASSERT_TRUE (bitmap_bit_p (&bb_info->use, t.effective_regno (101)));
+
+ /* ...and a def of r100. */
+ ASSERT_TRUE (bitmap_bit_p (&bb_info->def, t.effective_regno (100)));
+ ASSERT_FALSE (bitmap_bit_p (&bb_info->def, t.effective_regno (101)));
+}
+
+/* Run all of the selftests within this file. */
+
+void
+df_core_c_tests ()
+{
+ test_df_single_set ();
+}
+
+} // namespace selftest
+
+#endif /* #if CHECKING_P */
diff --git a/gcc/selftest-run-tests.c b/gcc/selftest-run-tests.c
index 1dce665..5c95aaa 100644
--- a/gcc/selftest-run-tests.c
+++ b/gcc/selftest-run-tests.c
@@ -71,6 +71,7 @@ selftest::run_tests ()
gimple_c_tests ();
rtl_tests_c_tests ();
read_rtl_function_c_tests ();
+ df_core_c_tests ();
/* Higher-level tests, or for components that other selftests don't
rely on. */
diff --git a/gcc/selftest.h b/gcc/selftest.h
index ae39101..0033942 100644
--- a/gcc/selftest.h
+++ b/gcc/selftest.h
@@ -200,6 +200,7 @@ extern const char *path_to_src_gcc;
/* Declarations for specific families of tests (by source file), in
alphabetical order. */
extern void bitmap_c_tests ();
+extern void df_core_c_tests ();
extern void diagnostic_c_tests ();
extern void diagnostic_show_locus_c_tests ();
extern void edit_context_c_tests ();
diff --git a/gcc/testsuite/selftests/single-set.rtl b/gcc/testsuite/selftests/single-set.rtl
new file mode 100644
index 0000000..d72015f
--- /dev/null
+++ b/gcc/testsuite/selftests/single-set.rtl
@@ -0,0 +1,5 @@
+(function "test"
+ (insn-chain
+ (insn 1 0 0 2 (set (reg:SI 100) (reg:SI 101)) -1 (nil))
+ ) ;; insn-chain
+) ;; function
--
1.8.5.3
next prev parent reply other threads:[~2016-10-05 15:44 UTC|newest]
Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-05 15:44 [PATCH 00/16] RTL frontend (v3) David Malcolm
2016-10-05 15:44 ` David Malcolm [this message]
2016-10-05 15:44 ` [PATCH 01/16] read-md.c: Add various cleanups to ~rtx_reader David Malcolm
2016-10-05 15:51 ` Bernd Schmidt
2016-10-11 15:15 ` David Malcolm
2016-10-12 21:57 ` Richard Sandiford
2016-10-14 17:45 ` [PATCH] read-md.c: Move various state to within class rtx_reader David Malcolm
2016-10-17 11:05 ` Bernd Schmidt
2016-10-17 11:37 ` Richard Sandiford
2016-10-17 16:27 ` [PATCH] read-md.c: Move various state to within class rtx_reader (v3) David Malcolm
2016-10-17 20:23 ` Richard Sandiford
2016-10-05 15:44 ` [PATCH 08/16] (partially-approved): Introduce selftest::locate_file David Malcolm
2016-10-05 16:10 ` Bernd Schmidt
2016-10-05 15:44 ` [PATCH 07/16] read-md: add some helper functions David Malcolm
2016-10-05 15:57 ` Bernd Schmidt
2016-10-05 15:45 ` [PATCH 03/16] (approved) selftest.h: add temp_override fixture David Malcolm
2016-10-05 15:45 ` [PATCH 09/16] Split class rtx_reader into base_rtx_reader vs rtx_reader David Malcolm
2016-10-11 15:53 ` Bernd Schmidt
2016-10-18 20:30 ` David Malcolm
2016-10-19 14:45 ` Bernd Schmidt
2016-10-20 19:14 ` Richard Sandiford
2016-10-05 15:45 ` [PATCH 14/16] RTL interpreter (work-in-progress) David Malcolm
2016-10-05 15:45 ` [PATCH 06/16] Introduce emit_status::ensure_regno_capacity David Malcolm
2016-10-05 15:55 ` Bernd Schmidt
2016-11-18 20:47 ` [PATCH] Introduce emit_status::ensure_regno_capacity (v5) David Malcolm
2016-11-22 13:34 ` Bernd Schmidt
2016-10-05 15:55 ` [PATCH 06/16] Introduce emit_status::ensure_regno_capacity Bernd Schmidt
2016-10-05 15:45 ` [PATCH 04/16] (approved) Expose forcibly_ggc_collect and run it after all selftests David Malcolm
2016-10-05 15:45 ` [PATCH 16/16] Add "__RTL" to cc1 David Malcolm
2016-10-05 16:10 ` Joseph Myers
2016-10-07 15:27 ` [PATCH] Add "__RTL" to cc1 (v2) David Malcolm
2016-10-13 13:49 ` Richard Biener
2016-10-13 13:52 ` Bernd Schmidt
2016-10-14 9:33 ` Richard Biener
2016-10-14 9:48 ` Bernd Schmidt
2016-10-14 9:50 ` Richard Biener
2016-10-14 19:25 ` David Malcolm
2016-10-14 19:27 ` Bernd Schmidt
2016-10-14 19:35 ` David Malcolm
2016-10-14 19:23 ` David Malcolm
2016-10-05 15:45 ` [PATCH 12/16] combine.c selftests (v2) David Malcolm
2016-10-05 15:45 ` [PATCH 02/16] (approved) Add selftest::read_file David Malcolm
2016-10-05 15:45 ` [PATCH 13/16] cse.c selftests David Malcolm
2016-10-05 15:45 ` [PATCH 10/16] Introduce class function_reader (v3) David Malcolm
2016-10-05 16:00 ` Bernd Schmidt
2016-10-07 13:44 ` David Malcolm
2016-10-10 18:53 ` Richard Sandiford
2016-10-05 15:45 ` [PATCH 15/16] RTL frontend (rtl1), on top of dump reader David Malcolm
2016-10-06 13:30 ` Bernd Schmidt
2016-10-06 19:53 ` RTL frontend input format again (was Re: [PATCH 15/16] RTL frontend (rtl1), on top of dump reader) David Malcolm
2016-10-06 19:59 ` David Malcolm
2016-10-07 10:38 ` Bernd Schmidt
2016-10-07 13:27 ` David Malcolm
2016-10-07 13:58 ` Bernd Schmidt
2016-10-07 18:08 ` David Malcolm
2016-10-12 10:45 ` [PATCH] print_rtx_function: integrate dumping of the CFG into the insn chain David Malcolm
2016-10-12 10:50 ` Bernd Schmidt
2016-10-12 17:17 ` [PATCH] Add a "compact" mode to print_rtx_function David Malcolm
2016-10-12 17:31 ` Bernd Schmidt
2016-10-12 20:06 ` [PATCH] (v2) " David Malcolm
2016-10-13 10:21 ` Bernd Schmidt
2016-10-13 15:22 ` [PATCH] Omit INSN_LOCATION from compact dumps David Malcolm
2016-10-13 15:50 ` Bernd Schmidt
2016-11-22 13:18 ` [PATCH] (v2) Add a "compact" mode to print_rtx_function Dominik Vogt
2016-11-22 13:32 ` Bernd Schmidt
2016-11-22 13:37 ` Jakub Jelinek
2016-11-22 14:25 ` David Malcolm
2016-11-22 14:39 ` Dominik Vogt
2016-11-22 14:38 ` Bernd Schmidt
2016-11-22 14:45 ` Jakub Jelinek
2016-11-22 15:38 ` David Malcolm
2016-11-25 16:37 ` Dominik Vogt
2016-12-01 10:13 ` [PING] " Dominik Vogt
2016-12-01 12:28 ` Bernd Schmidt
2016-12-02 12:36 ` Andreas Krebbel
2016-10-12 20:33 ` [PATCH] Tweaks " David Malcolm
2016-10-13 10:24 ` Bernd Schmidt
2016-10-13 14:08 ` David Malcolm
2016-10-13 14:18 ` Bernd Schmidt
2016-10-14 19:41 ` [PATCH] (v2) " David Malcolm
2016-10-14 20:07 ` Bernd Schmidt
2016-10-19 14:36 ` RTL frontend input format again (was Re: [PATCH 15/16] RTL frontend (rtl1), on top of dump reader) David Malcolm
2016-10-19 14:42 ` Bernd Schmidt
2016-10-19 17:19 ` David Malcolm
2016-10-19 17:22 ` Bernd Schmidt
2016-10-19 17:54 ` David Malcolm
2016-10-20 13:55 ` INSN_UIDs " David Malcolm
2016-10-20 14:11 ` Bernd Schmidt
2016-10-20 14:20 ` David Malcolm
2016-10-20 14:22 ` Bernd Schmidt
2016-10-26 18:19 ` [PATCH] Show INSN_UIDs in compact mode David Malcolm
2016-10-26 18:20 ` Bernd Schmidt
2016-10-06 15:24 ` [PATCH 15/16] RTL frontend (rtl1), on top of dump reader Bernd Schmidt
2016-10-07 16:22 ` [PATCH] RTL frontend (rtl1), on top of dump reader (v4) David Malcolm
2016-10-05 15:45 ` [PATCH 05/16] Introduce rtl_data::init_stack_alignment David Malcolm
2016-10-05 15:52 ` Bernd Schmidt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1475684110-2521-12-git-send-email-dmalcolm@redhat.com \
--to=dmalcolm@redhat.com \
--cc=gcc-patches@gcc.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).