aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog3
-rw-r--r--gcc/tree-cfg.c13
2 files changed, 16 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index eda99eb..a9a890c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -10,6 +10,9 @@
Make them static.
* hard-reg-set.h: Remove the corresponding declarations.
+ * tree-cfg.c (verify_stmts): Check that
+ bb_for_stmt (stmt) == bb for every PHI node and statement.
+
2005-03-14 Alan Modra <amodra@bigpond.net.au>
* config.gcc: Remove excess indentation.
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index ba04101..18fcab7 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -3696,6 +3696,12 @@ verify_stmts (void)
{
int phi_num_args = PHI_NUM_ARGS (phi);
+ if (bb_for_stmt (phi) != bb)
+ {
+ error ("bb_for_stmt (phi) is set to a wrong basic block\n");
+ err |= true;
+ }
+
for (i = 0; i < phi_num_args; i++)
{
tree t = PHI_ARG_DEF (phi, i);
@@ -3734,6 +3740,13 @@ verify_stmts (void)
for (bsi = bsi_start (bb); !bsi_end_p (bsi); )
{
tree stmt = bsi_stmt (bsi);
+
+ if (bb_for_stmt (stmt) != bb)
+ {
+ error ("bb_for_stmt (stmt) is set to a wrong basic block\n");
+ err |= true;
+ }
+
bsi_next (&bsi);
err |= verify_stmt (stmt, bsi_end_p (bsi));
addr = walk_tree (&stmt, verify_node_sharing, htab, NULL);