OSDN Git Service

* global.c (build_insn_chain): Verify no real insns exist past the
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 9 Oct 1998 13:28:55 +0000 (13:28 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 9 Oct 1998 13:28:55 +0000 (13:28 +0000)
        end of the last basic block, then exit the loop.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22961 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/global.c

index 57bf533..436cd1d 100644 (file)
@@ -1,3 +1,8 @@
+Fri Oct  9 14:26:44 1998  Jeffrey A Law  (law@cygnus.com)
+
+       * global.c (build_insn_chain): Verify no real insns exist past the
+       end of the last basic block, then exit the loop.
+
 Fri Oct  9 11:44:47 1998  David Edelsohn  <edelsohn@mhpcc.edu>
 
        * loop.c (insert_bct): Ensure loop_iteration_var non-zero before use.
index 0bacc23..af27ea0 100644 (file)
@@ -1722,6 +1722,20 @@ build_insn_chain (first)
 
       if (first == basic_block_end[b])
        b++;
+
+      /* Stop after we pass the end of the last basic block.  Verify that
+        no real insns are after the end of the last basic block.
+
+        We may want to reorganize the loop somewhat since this test should
+        always be the right exit test.  */
+      if (b == n_basic_blocks)
+       {
+         for (first = NEXT_INSN (first) ; first; first = NEXT_INSN (first))
+           if (GET_RTX_CLASS (GET_CODE (first)) == 'i'
+               && GET_CODE (PATTERN (first)) != USE)
+             abort ();
+         break;
+       }
     }
   FREE_REG_SET (live_relevant_regs);
   *p = 0;