OSDN Git Service

* cfgrtl.c (rtl_delete_block): A basic block may be followed by
authorsayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 6 Jan 2005 18:05:27 +0000 (18:05 +0000)
committersayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 6 Jan 2005 18:05:27 +0000 (18:05 +0000)
more than one barrier, in which case we should delete them all.

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

gcc/ChangeLog
gcc/cfgrtl.c

index 669df34..730aa16 100644 (file)
@@ -1,3 +1,8 @@
+2005-01-06  Roger Sayle  <roger@eyesopen.com>
+
+       * cfgrtl.c (rtl_delete_block): A basic block may be followed by
+       more than one barrier, in which case we should delete them all.
+
 2005-01-06  Tobias Schlueter  <tobias.schlueter@physik.uni-muenchen.de>
 
        * gcc.c (process_command): Change year in 'gcc --version' to 2005.
index 90bd95f..fa0af4b 100644 (file)
@@ -1,6 +1,6 @@
 /* Control flow graph manipulation code for GNU compiler.
    Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-   1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+   1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -379,10 +379,13 @@ rtl_delete_block (basic_block b)
   if (tablejump_p (end, NULL, &tmp))
     end = tmp;
 
-  /* Include any barrier that may follow the basic block.  */
+  /* Include any barriers that may follow the basic block.  */
   tmp = next_nonnote_insn (end);
-  if (tmp && BARRIER_P (tmp))
-    end = tmp;
+  while (tmp && BARRIER_P (tmp))
+    {
+      end = tmp;
+      tmp = next_nonnote_insn (end);
+    }
 
   /* Selectively delete the entire chain.  */
   BB_HEAD (b) = NULL;