re PR middle-end/18903 (ice in bsi_after_labels)
authorAndrew Pinski <pinskia@physics.uc.edu>
Fri, 10 Dec 2004 19:32:14 +0000 (19:32 +0000)
committerAndrew Pinski <pinskia@gcc.gnu.org>
Fri, 10 Dec 2004 19:32:14 +0000 (11:32 -0800)
2004-12-10  Andrew Pinski  <pinskia@physics.uc.edu>

        PR middle-end/18903
        * gcc.c-torture/compile/pr18903.c: New test.

2004-12-10  Andrew Pinski  <pinskia@physics.uc.edu>

        PR middle-end/18903
        * tree-cfg.c (remove_bb): Put the moved label at the beginning
        of the basic block.

From-SVN: r92006

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/compile/pr18903.c [new file with mode: 0644]
gcc/tree-cfg.c

index fad1ef66a9ecc2acad91c2cf085180b5959c89e5..6df6bfbab00f42b542ffbc54df29981c62ac2718 100644 (file)
@@ -1,3 +1,9 @@
+2004-12-10  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       PR middle-end/18903
+       * tree-cfg.c (remove_bb): Put the moved label at the beginning
+       of the basic block.
+
 2004-12-10  Kazu Hirata  <kazu@cs.umass.edu>
 
        * tree-data-ref.c (free_data_refs): Free each data_reference
index 04f3abb62ac3cdd8178684b15780c2477eda98f6..c4d3759bae2ee4b19b08de479fd6f9dfad5104d3 100644 (file)
@@ -1,3 +1,8 @@
+2004-12-10  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       PR middle-end/18903
+       * gcc.c-torture/compile/pr18903.c: New test.
+
 2004-12-10  Richard Sandiford  <rsandifo@redhat.com>
 
        * gcc.c-torture/execute/20041210-1.c: New test.
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr18903.c b/gcc/testsuite/gcc.c-torture/compile/pr18903.c
new file mode 100644 (file)
index 0000000..3c12351
--- /dev/null
@@ -0,0 +1,17 @@
+/* We were ICEing in bsi_after_labels because 
+   we had a BB which did not have a lablel.
+   PR middle-end/18903 */
+
+#ifndef NO_LABEL_VALUES
+void g (int s, int f)
+{
+  &&ff;
+  s = f;
+  ff:
+  goto end;
+  f = s;
+  end:;
+}
+#else
+int g;
+#endif
index db12f98929d1119ad63a31596a552d7998033b5b..a7d24410169b728e291296f9c67661c6f97459be 100644 (file)
@@ -2003,10 +2003,10 @@ remove_bb (basic_block bb)
           && FORCED_LABEL (LABEL_EXPR_LABEL (stmt)))
        {
          basic_block new_bb = bb->prev_bb;
-         block_stmt_iterator new_bsi = bsi_after_labels (new_bb);
+         block_stmt_iterator new_bsi = bsi_start (new_bb);
                  
          bsi_remove (&i);
-         bsi_insert_after (&new_bsi, stmt, BSI_NEW_STMT);
+         bsi_insert_before (&new_bsi, stmt, BSI_NEW_STMT);
        }
       else
         {