flow.c (verify_flow_info): Added two more sanity checks.
authorJason Eckhardt <jle@cygnus.com>
Wed, 3 May 2000 16:39:55 +0000 (16:39 +0000)
committerJason Eckhardt <jle@gcc.gnu.org>
Wed, 3 May 2000 16:39:55 +0000 (16:39 +0000)
Tue May  2 00:20:30 2000  Jason Eckhardt  <jle@cygnus.com>

        * flow.c (verify_flow_info): Added two more sanity checks. The
        first checks that the blocks are numbered consecutively. The second
        checks that n_basic_blocks is actually equal to the number of
        basic blocks in the insn chain.

From-SVN: r33632

gcc/ChangeLog
gcc/flow.c

index b28cacc..267ce89 100644 (file)
@@ -1,3 +1,10 @@
+Tue May  2 00:20:30 2000  Jason Eckhardt  <jle@cygnus.com>
+
+        * flow.c (verify_flow_info): Added two more sanity checks. The
+        first checks that the blocks are numbered consecutively. The second
+        checks that n_basic_blocks is actually equal to the number of
+        basic blocks in the insn chain.
+
 2000-05-03  Zack Weinberg  <zack@wolery.cumb.org>
 
        * cpplib.h: Add accessor macros for token lists.
index f0cee82..08f1f0a 100644 (file)
@@ -6177,7 +6177,7 @@ verify_flow_info ()
   const rtx rtx_first = get_insns ();
   basic_block *bb_info;
   rtx x;
-  int i, err = 0;
+  int i, last_bb_num_seen, num_bb_notes, err = 0;
 
   bb_info = (basic_block *) xcalloc (max_uid, sizeof (basic_block));
 
@@ -6340,9 +6340,21 @@ verify_flow_info ()
        }
     }
 
+  last_bb_num_seen = -1;
+  num_bb_notes = 0;
   x = rtx_first;
   while (x)
     {
+      if (GET_CODE (x) == NOTE
+         && NOTE_LINE_NUMBER (x) == NOTE_INSN_BASIC_BLOCK)
+       {
+         basic_block bb = NOTE_BASIC_BLOCK (x);
+         num_bb_notes++;
+         if (bb->index != last_bb_num_seen + 1)
+           fatal ("Basic blocks not numbered consecutively");
+         last_bb_num_seen = bb->index;
+       }
+
       if (!bb_info[INSN_UID (x)])
        {
          switch (GET_CODE (x))
@@ -6378,6 +6390,10 @@ verify_flow_info ()
       x = NEXT_INSN (x);
     }
 
+  if (num_bb_notes != n_basic_blocks)
+    fatal ("number of bb notes in insn chain (%d) != n_basic_blocks (%d)",
+          num_bb_notes, n_basic_blocks);
+
   if (err)
     abort ();